📄 subject_60864.htm
字号:
<p>
序号:60864 发表者:hmily008 发表日期:2003-11-16 08:19:41
<br>主题:那位高手可以帮我看一下下面的程序:多谢了,小弟初学:
<br>内容:服务器端<BR>#include "winsock2.h"<BR>#include "stdio.h"<BR>#define DATA "OK!"<BR>void main()<BR>{<BR> //定义变量<BR> SOCKET socketid;<BR> struct sockaddr_in server_addr;<BR> SOCKET msgsocket;<BR> char buffer[1024];<BR> int rval;<BR> <BR> <BR> //检查版本,初始化<BR> int Status; <BR> WSADATA wsadata; //提供的版本号,出口<BR> WORD wVersionRequested; //程序需要的版本,入口<BR><BR><BR> //socket版本确定<BR> wVersionRequested=MAKEWORD(1,1);//设置程序所要的版本<BR> Status = WSAStartup(wVersionRequested, &wsadata);<BR> if(Status!=0)<BR> {<BR> <BR> WSACleanup(); <BR> return;<BR> }<BR><BR> //建立socket;<BR> socketid=socket(AF_INET,SOCK_STREAM,0);<BR> if(socketid==INVALID_SOCKET)<BR> {<BR> perror("there is error in opening sockid");<BR> return;<BR> }<BR><BR> //出错处理;<BR><BR> <BR> //绑定<BR> server_addr.sin_family=AF_INET;<BR> server_addr.sin_port=htons(5050);<BR> server_addr.sin_addr.S_un.S_addr=inet_addr("127.0.0.0");<BR> bind(socketid,(sockaddr*)&server_addr,sizeof(server_addr)<0);<BR> //if<BR><BR> //绑定出错处理<BR> //监听,调用程序处理请求<BR> listen(socketid,10);<BR> //<BR> do<BR> {<BR> msgsocket=accept(socketid,(struct sockaddr*)&server_addr,(int*)sizeof(server_addr));<BR> if(msgsocket==INVALID_SOCKET)<BR> {<BR> break;<BR> }<BR> else <BR> {<BR> memset(buffer,0,sizeof(buffer));<BR> rval=recv(msgsocket,buffer,1024,0);<BR> if(rval<0)<BR> {<BR> perror("there is error in recving");<BR> break;<BR> }<BR> if(rval==0)<BR> {<BR> perror("sending error");<BR> return;<BR> }<BR> else<BR> printf("-->%s\n",buffer);<BR> }<BR> closesocket(msgsocket);<BR> }while(true);<BR> closesocket(socketid);<BR> WSACleanup();<BR> return;<BR>}<BR>客户端:<BR>#include "winsock2.h"<BR>#include "stdio.h"<BR><BR>void main()<BR>{<BR> //定义所使用的变量<BR> char OSVersioninfo[30];<BR> int sockid; //建立的socket号<BR> struct sockaddr_in server_addr;//服务器地址结构<BR> int Status; <BR> WSADATA wsadata; //提供的版本号,出口<BR> WORD wVersionRequested; //程序需要的版本,入口<BR><BR><BR> //socket版本确定<BR> wVersionRequested=MAKEWORD(1,1);//设置程序所要的版本<BR> Status = WSAStartup(wVersionRequested, &wsadata);<BR> if(Status!=0)<BR> {<BR> //调用socket的出错标志;<BR> WSACleanup(); <BR> return;<BR> }<BR><BR><BR> //第二建立socket<BR> sockid=socket(AF_INET,SOCK_STREAM,0);<BR> if(sockid==INVALID_SOCKET)<BR> {<BR> perror("there is error in opening sockid");<BR> return;<BR> }<BR><BR> //第三绑定服务器的ip,端口以及其他所要的信息<BR> server_addr.sin_family=AF_INET;<BR> server_addr.sin_port=htons(5050);<BR> server_addr.sin_addr.S_un.S_addr=inet_addr("127.0.0.0");<BR>// server_addr.sin_addr.<BR>/* //通过命令行得到服务器ip,端口等所需信息;<BR> hostaddr = gethostbyname(server_addr);<BR> <BR><BR>*/<BR> //建立连接:<BR> bind(sockid,(sockaddr*)&server_addr,sizeof(server_addr));<BR> //发送本地信息<BR> if(connect(sockid,(struct sockaddr*)&server_addr,sizeof(server_addr))<0)<BR> {<BR> perror("connecting error");<BR> return;<BR> }<BR>/*<BR> int i;<BR> i=send(sockid,DATA,sizeof(DATA),0);<BR> if(i=SOCKET_ERROR)<BR> { <BR> perror("sending DATA error");<BR> return;<BR> } <BR>*/<BR> //if//得到确认<BR><BR> //得到本地版本信息存入name[]<BR> OSVERSIONINFO osvi;<BR> osvi.dwOSVersionInfoSize = sizeof(osvi);<BR> GetVersionEx(&osvi);<BR> <BR> if (osvi.dwPlatformId == VER_PLATFORM_WIN32_NT) <BR> OSVersioninfo[30]=char("win2000");<BR> else if (osvi.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS)<BR> OSVersioninfo[30]=char("win98"); <BR> else if (osvi.dwPlatformId == VER_PLATFORM_WIN32s)<BR> OSVersioninfo[30]=char("win32"); <BR> else<BR> OSVersioninfo[30]=char("Unkown");<BR> <BR> <BR> int k;<BR> k=send(sockid,OSVersioninfo,sizeof(OSVersioninfo),0);<BR> if(k=SOCKET_ERROR)<BR> { <BR> perror("sending OSVersioninfo error");<BR> return;<BR> }<BR><BR><BR> //结束;<BR> closesocket(sockid);<BR> WSACleanup();<BR> return;<BR>}
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
回复者:xiongli 回复日期:2003-11-16 09:12:55
<br>内容:恩。看了
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:BigJames 回复日期:2003-11-19 13:42:09
<br>内容:客户端不要用bind,把那一行去掉<BR>如果还不行的话,把两端的地址改成127.0.0.1
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回复者:freeedom 回复日期:2003-11-19 14:54:37
<br>内容:我照楼上的这么做过,好象也不行。。<BR><BR>楼主你好,我正好也在写类似的程序,我的帖在这里:http://www.vchelp.net/cndevforum/subject_view.asp?subject_id=61373&forum_id=25<BR><BR>希望能跟你多多交流。MSN:xiezhaoye@hotmail.com
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:BigJames 回复日期:2003-11-19 15:08:40
<br>内容:什么问题,ws2_32.lib?还是别的问题。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:qin 回复日期:2003-11-21 10:21:13
<br>内容:Serever:server_addr.sin_addr.S_un.S_addr=INADDR_ANY
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:周晖 回复日期:2003-11-21 13:27:42
<br>内容:server_addr.sin_port=htons(5050);<BR>使用小于5000的端口号试试。大于5000的端口号是为其他服务预留的。<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -