孙鑫的第14课网络编程,为什么在VC6下好好的,在vs2010没得到想要的效果?
两个工程的代码如下:(都是Win32 Console Application)
TCPSrv工程:
- C/C++ code
#include<WinSock2.h>#include<stdio.h>void main(){ WORD wVersionRequested; WSADATA wsaData; int err; wVersionRequested=MAKEWORD(1,1); err=WSAStartup(wVersionRequested,&wsaData); if(err!=0) { return; } if(LOBYTE(wsaData.wVersion)!=1||HIBYTE(wsaData.wVersion)!=1) { WSACleanup(); return; } SOCKET socketSrv=socket(AF_INET,SOCK_STREAM,0); SOCKADDR_IN addrSrv; addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY); addrSrv.sin_family=AF_INET; addrSrv.sin_port=htons(6000); bind(socketSrv,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR)); listen(socketSrv,5); SOCKADDR_IN addrClient; int len=sizeof(SOCKADDR); while(1) { SOCKET socketConn=accept(socketSrv,(SOCKADDR*)&addrClient,&len); char sendBuf[100; sprintf(sendBuf,"Welcome %s to http://www.ding.org",inet_ntoa(addrClient.sin_addr)); send(socketConn,sendBuf,strlen(sendBuf)+1,0); char recvBuf[100]; recv(socketConn,recvBuf,100,0); printf("%s\n",recvBuf); closesocket(socketConn); }}TCPClient工程:
- C/C++ code
#include<WinSock2.h>#include<stdio.h>void main(){ WORD wVersionRequested; WSADATA wsaData; int err; wVersionRequested=MAKEWORD(1,1); err=WSAStartup(wVersionRequested,&wsaData); if(err!=0) { return; } if(LOBYTE(wsaData.wVersion)!=1||HIBYTE(wsaData.wVersion)!=1) { WSACleanup(); return; } SOCKET socketClient=socket(AF_INET,SOCK_STREAM,0); SOCKADDR_IN addrSrv; addrSrv.sin_addr.S_un.S_addr=inet_addr("127.0.0.1"); addrSrv.sin_family=AF_INET; addrSrv.sin_port=htons(6000); connect(socketClient,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR)); char recvBuf[100; recv(socketClient,recvBuf,100,0); printf("%s\n",recvBuf); send(socketClient,"this is zhangsan",strlen("this is zhangsan")+1,0); closesocket(socketClient); WSACleanup();}我都包含了WS2_32.lib的。
在VS2010下,
先运行第一个工程,啥都没有。
第二个工程不断输出 烫烫烫(很多“烫”字)welcome 204.204.204.204 to http://www.ding.org 烫烫(很多烫)
这时,第一个工程依旧啥都没有。
[解决办法]
57920702 QQ联系!
[解决办法]