⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 subject_60864.htm

📁 vc
💻 HTM
字号:
<p>
序号:60864 发表者:hmily008 发表日期:2003-11-16 08:19:41
<br>主题:那位高手可以帮我看一下下面的程序:多谢了,小弟初学:
<br>内容:服务器端<BR>#include &#34;winsock2.h&#34;<BR>#include &#34;stdio.h&#34;<BR>#define DATA &#34;OK!&#34;<BR>void main()<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;//定义变量<BR>&nbsp;&nbsp;&nbsp;&nbsp;SOCKET socketid;<BR>&nbsp;&nbsp;&nbsp;&nbsp;struct sockaddr_in server_addr;<BR>&nbsp;&nbsp;&nbsp;&nbsp;SOCKET msgsocket;<BR>&nbsp;&nbsp;&nbsp;&nbsp;char buffer[1024];<BR>&nbsp;&nbsp;&nbsp;&nbsp;int rval;<BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;//检查版本,初始化<BR>&nbsp;&nbsp;&nbsp;&nbsp;int Status;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;WSADATA wsadata;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//提供的版本号,出口<BR>&nbsp;&nbsp;&nbsp;&nbsp;WORD wVersionRequested;&nbsp;&nbsp;//程序需要的版本,入口<BR><BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;//socket版本确定<BR>&nbsp;&nbsp;&nbsp;&nbsp;wVersionRequested=MAKEWORD(1,1);//设置程序所要的版本<BR>&nbsp;&nbsp;&nbsp;&nbsp;Status = WSAStartup(wVersionRequested, &amp;wsadata);<BR>&nbsp;&nbsp;&nbsp;&nbsp;if(Status!=0)<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WSACleanup();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;//建立socket;<BR>&nbsp;&nbsp;&nbsp;&nbsp;socketid=socket(AF_INET,SOCK_STREAM,0);<BR>&nbsp;&nbsp;&nbsp;&nbsp;if(socketid==INVALID_SOCKET)<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;perror(&#34;there is error in opening sockid&#34;);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//出错处理;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;//绑定<BR>&nbsp;&nbsp;&nbsp;&nbsp;server_addr.sin_family=AF_INET;<BR>&nbsp;&nbsp;&nbsp;&nbsp;server_addr.sin_port=htons(5050);<BR>&nbsp;&nbsp;&nbsp;&nbsp;server_addr.sin_addr.S_un.S_addr=inet_addr(&#34;127.0.0.0&#34;);<BR>&nbsp;&nbsp;&nbsp;&nbsp;bind(socketid,(sockaddr*)&amp;server_addr,sizeof(server_addr)&lt;0);<BR>&nbsp;&nbsp;&nbsp;&nbsp;//if<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;//绑定出错处理<BR>&nbsp;&nbsp;&nbsp;&nbsp;//监听,调用程序处理请求<BR>&nbsp;&nbsp;&nbsp;&nbsp; listen(socketid,10);<BR>&nbsp;&nbsp;&nbsp;&nbsp;//<BR>&nbsp;&nbsp;&nbsp;&nbsp;do<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;msgsocket=accept(socketid,(struct sockaddr*)&amp;server_addr,(int*)sizeof(server_addr));<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(msgsocket==INVALID_SOCKET)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;memset(buffer,0,sizeof(buffer));<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rval=recv(msgsocket,buffer,1024,0);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(rval&lt;0)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;perror(&#34;there is error in recving&#34;);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(rval==0)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;perror(&#34;sending error&#34;);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(&#34;--&gt;%s\n&#34;,buffer);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;closesocket(msgsocket);<BR>&nbsp;&nbsp;&nbsp;&nbsp;}while(true);<BR>&nbsp;&nbsp;&nbsp;&nbsp;closesocket(socketid);<BR>&nbsp;&nbsp;&nbsp;&nbsp;WSACleanup();<BR>&nbsp;&nbsp;&nbsp;&nbsp;return;<BR>}<BR>客户端:<BR>#include &#34;winsock2.h&#34;<BR>#include &#34;stdio.h&#34;<BR><BR>void main()<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;//定义所使用的变量<BR>&nbsp;&nbsp;&nbsp;&nbsp;char OSVersioninfo[30];<BR>&nbsp;&nbsp;&nbsp;&nbsp;int sockid;&nbsp;&nbsp;&nbsp;&nbsp;//建立的socket号<BR>&nbsp;&nbsp;&nbsp;&nbsp;struct sockaddr_in server_addr;//服务器地址结构<BR>&nbsp;&nbsp;&nbsp;&nbsp;int Status;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;WSADATA wsadata;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//提供的版本号,出口<BR>&nbsp;&nbsp;&nbsp;&nbsp;WORD wVersionRequested;&nbsp;&nbsp;//程序需要的版本,入口<BR><BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;//socket版本确定<BR>&nbsp;&nbsp;&nbsp;&nbsp;wVersionRequested=MAKEWORD(1,1);//设置程序所要的版本<BR>&nbsp;&nbsp;&nbsp;&nbsp;Status = WSAStartup(wVersionRequested, &amp;wsadata);<BR>&nbsp;&nbsp;&nbsp;&nbsp;if(Status!=0)<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//调用socket的出错标志;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WSACleanup();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR><BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;//第二建立socket<BR>&nbsp;&nbsp;&nbsp;&nbsp;sockid=socket(AF_INET,SOCK_STREAM,0);<BR>&nbsp;&nbsp;&nbsp;&nbsp;if(sockid==INVALID_SOCKET)<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;perror(&#34;there is error in opening sockid&#34;);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;//第三绑定服务器的ip,端口以及其他所要的信息<BR>&nbsp;&nbsp;&nbsp;&nbsp;server_addr.sin_family=AF_INET;<BR>&nbsp;&nbsp;&nbsp;&nbsp;server_addr.sin_port=htons(5050);<BR>&nbsp;&nbsp;&nbsp;&nbsp;server_addr.sin_addr.S_un.S_addr=inet_addr(&#34;127.0.0.0&#34;);<BR>//&nbsp;&nbsp;&nbsp;&nbsp;server_addr.sin_addr.<BR>/*&nbsp;&nbsp;&nbsp;&nbsp;//通过命令行得到服务器ip,端口等所需信息;<BR>&nbsp;&nbsp;&nbsp;&nbsp;hostaddr = gethostbyname(server_addr);<BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR><BR>*/<BR>&nbsp;&nbsp;&nbsp;&nbsp;//建立连接:<BR>&nbsp;&nbsp;&nbsp;&nbsp;bind(sockid,(sockaddr*)&amp;server_addr,sizeof(server_addr));<BR>&nbsp;&nbsp;&nbsp;&nbsp;//发送本地信息<BR>&nbsp;&nbsp;&nbsp;&nbsp;if(connect(sockid,(struct sockaddr*)&amp;server_addr,sizeof(server_addr))&lt;0)<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;perror(&#34;connecting error&#34;);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>/*<BR>&nbsp;&nbsp;&nbsp;&nbsp;int i;<BR>&nbsp;&nbsp;&nbsp;&nbsp;i=send(sockid,DATA,sizeof(DATA),0);<BR>&nbsp;&nbsp;&nbsp;&nbsp;if(i=SOCKET_ERROR)<BR>&nbsp;&nbsp;&nbsp;&nbsp;{ <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;perror(&#34;sending DATA error&#34;);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;<BR>*/<BR>&nbsp;&nbsp;&nbsp;&nbsp;//if//得到确认<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;//得到本地版本信息存入name[]<BR>&nbsp;&nbsp;&nbsp;&nbsp;OSVERSIONINFO osvi;<BR>&nbsp;&nbsp;&nbsp;&nbsp;osvi.dwOSVersionInfoSize = sizeof(osvi);<BR>&nbsp;&nbsp;&nbsp;&nbsp;GetVersionEx(&amp;osvi);<BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;if (osvi.dwPlatformId == VER_PLATFORM_WIN32_NT) <BR>&nbsp;&nbsp;&nbsp;&nbsp;OSVersioninfo[30]=char(&#34;win2000&#34;);<BR>&nbsp;&nbsp;&nbsp;&nbsp;else if (osvi.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS)<BR>&nbsp;&nbsp;&nbsp;&nbsp;OSVersioninfo[30]=char(&#34;win98&#34;);&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;else if (osvi.dwPlatformId == VER_PLATFORM_WIN32s)<BR>&nbsp;&nbsp;&nbsp;&nbsp;OSVersioninfo[30]=char(&#34;win32&#34;);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;else<BR>&nbsp;&nbsp;&nbsp;&nbsp;OSVersioninfo[30]=char(&#34;Unkown&#34;);<BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;int k;<BR>&nbsp;&nbsp;&nbsp;&nbsp;k=send(sockid,OSVersioninfo,sizeof(OSVersioninfo),0);<BR>&nbsp;&nbsp;&nbsp;&nbsp;if(k=SOCKET_ERROR)<BR>&nbsp;&nbsp;&nbsp;&nbsp;{ <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;perror(&#34;sending OSVersioninfo error&#34;);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR><BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;//结束;<BR>&nbsp;&nbsp;&nbsp;&nbsp; closesocket(sockid);<BR>&nbsp;&nbsp;&nbsp;&nbsp; WSACleanup();<BR>&nbsp;&nbsp;&nbsp;&nbsp; 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&amp;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>&nbsp;&nbsp;&nbsp;&nbsp;
<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 + -