容易的socket 通信程序,accept失败
简单的socket 通信程序,accept失败
服务器:
客户端:
调试了下,发现客户端能connect 上,也能发送,但是服务器那边accept的时候总是失败,不知道为何,求解答啊。
------解决思路----------------------
len = sizeof(clientAddr);
newSocket = accept(listenSocket,(SOCKADDR*)&clientAddr,&len);
服务器:
#include <WinSock2.h>
#include <iostream>
#include <string>
using namespace std;
#pragma comment(lib,"WS2_32.LIB")
int main()
{
WSADATA wsadata;
SOCKET listenSocket;
SOCKET newSocket;
SOCKADDR_IN serverAddr,clientAddr;
int len;
WSAStartup(MAKEWORD(2,2),&wsadata);
listenSocket = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
if (listenSocket == INVALID_SOCKET)
{
cout<<"create listenSocket failured"<<endl;
}
serverAddr.sin_family = AF_INET;
serverAddr.sin_port= htons(5150);
serverAddr.sin_addr.s_addr = inet_addr("172.16.1.45");
int iRet = bind(listenSocket,(SOCKADDR*)&serverAddr,sizeof(serverAddr));
if (-1 == iRet)
{
cout<<"bind failed"<<endl;
}
iRet = listen(listenSocket,5);
if (-1 == iRet )
{
cout<<"listen failed"<<endl;
}
while(1)
{
newSocket = accept(listenSocket,(SOCKADDR*)&clientAddr,&len);
if (INVALID_SOCKET == newSocket)
{
cout<<"accept new socket error"<<endl;
continue;
}
char buf[100];
memset(buf,0,100);
int n = recv(newSocket,buf,100,0);
if (n > 0)
{
cout<<buf<<endl;
}
closesocket(newSocket);
}
closesocket(listenSocket);
system("pause");
return 0;
}
客户端:
#include <WinSock2.h>
#include <iostream>
#include <string>
using namespace std;
#pragma comment(lib,"WS2_32.LIB")
int main()
{
WSADATA wsadata;
SOCKET s;
SOCKADDR_IN serverAddr;
WSAStartup(MAKEWORD(2,2),&wsadata);
s = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
serverAddr.sin_family = AF_INET;
serverAddr.sin_port= htons(5150);
serverAddr.sin_addr.s_addr = inet_addr("172.16.1.45");
int ierror = connect(s,(SOCKADDR*)&serverAddr,sizeof(serverAddr));
if (ierror == SOCKET_ERROR)
{
cout<<"connect failure"<<endl;
return 0;
}
string str;
cin>>str;
int iRet = send(s,str.c_str(),str.length(),0);
if (SOCKET_ERROR == iRet)
{
cout<<"send failure"<<endl;
}
closesocket(s);
system("pause");
return 0;
}
调试了下,发现客户端能connect 上,也能发送,但是服务器那边accept的时候总是失败,不知道为何,求解答啊。
------解决思路----------------------
len = sizeof(clientAddr);
newSocket = accept(listenSocket,(SOCKADDR*)&clientAddr,&len);