64,636
社区成员
发帖
与我相关
我的任务
分享
WSADATA wsaData;
int ret = WSAStartup(MAKEWORD(2, 2), &wsaData);
if (ret != 0) {
cout << "wsastartup error" << endl;
return 0;
}
cout << "wsastartup success" << endl;
SOCKET ListenSock;
ListenSock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if (ListenSock == INVALID_SOCKET) {
cout << "ListenSock error" << endl;
WSACleanup();
return 0;
}
cout << "ListenSock success" << endl;
SOCKADDR_IN server;
server.sin_family = AF_INET;
server.sin_port = htons(5000);
server.sin_addr.S_un.S_addr = htonl(INADDR_ANY);
int r = bind(ListenSock, (SOCKADDR*)&server, sizeof(server));
if (r == SOCKET_ERROR) {
cout << "bind error" << endl;
WSACleanup();
closesocket(ListenSock);
return 0;
}
cout << "bind success" << endl;
//监听
if (listen(ListenSock, 5) == SOCKET_ERROR) {
cout << "listen error" << endl;
WSACleanup();
closesocket(ListenSock);
return 0;
}
cout << "listen success" << endl;
SOCKET connetionSock;
SOCKADDR_IN clientAddr;
int clientAddrlen = sizeof(clientAddr);
char recvtext[1024] = {'0'};
char sendtext[1024] = {'0'};
while (true) {
connetionSock = accept(ListenSock, (SOCKADDR*)&clientAddr, &clientAddrlen);
if (connetionSock == INVALID_SOCKET) {
cout << "accept error" << endl;
continue;
}
cout << "accept success!client add:" << inet_ntoa(clientAddr.sin_addr) << endl;
if (recv(connetionSock, recvtext, strlen(recvtext), 0) == SOCKET_ERROR) {
cout << "recv error" << endl;
closesocket(connetionSock);
closesocket(ListenSock);
return 0;
}
cout << "recv success!recv's data:" << recvtext << endl;
cout << "input send's data:" << endl;
cin >> sendtext;
if (send(connetionSock, sendtext, strlen(sendtext), 0) == SOCKET_ERROR) {
cout << "send error" << endl;
closesocket(connetionSock);
closesocket(ListenSock);
return 0;
}
cout << "send success" << endl;
closesocket(connetionSock);
}
WSADATA wsaData;
int ret = WSAStartup(MAKEWORD(2, 2), &wsaData);
if (ret != 0) {
cout << "wsastartup error" << endl;
return 0;
}
cout << "wsastartup success" << endl;
SOCKET s;
s = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if (s == SOCKET_ERROR) {
cout << "socket error" << endl;
WSACleanup();
return 0;
}
cout << "socket success" << endl;
SOCKADDR_IN serveradd;
serveradd.sin_family = AF_INET;
serveradd.sin_port = htons(5000);
serveradd.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");
int rr = connect(s, (SOCKADDR*)&serveradd, sizeof(serveradd));
if (rr = SOCKET_ERROR) {
cout << "connect error:" << rr << endl;
closesocket(s);
WSACleanup();
return 0;
}
cout << "connect success" << endl;
cout << "input \"exit\" can exit this chat" << endl;
char recvbuf[1024] = {'0'};
char sendbuf[1024] = {'0'};
while (true) {
cout << "input send data:" << endl;
cin >> sendbuf;
if (send(s, sendbuf, 1024, 0) == SOCKET_ERROR) {
cout << "send error" << endl;
closesocket(s);
WSACleanup();
return 0;
}
if (!strcmp(sendbuf, "exit")) {
cout << "already exit chat" << endl;
break;
}
cout << "send success" << endl;
int r = recv(s, recvbuf, 1024, 0);
if (r == 0) {
cout << "r==0" << endl;
}
else if (r = SOCKET_ERROR) {
cout << "recv error" << endl;
}
recvbuf[r] = '\0';
if (!strcmp(recvbuf, "exit")) {
cout << "Server already exit chat" << endl;
break;
}
cout << "Server:" << recvbuf << endl;
}
if (rr = SOCKET_ERROR) {
cout << "connect error:" << rr << endl;
closesocket(s);
WSACleanup();
return 0;
}
注意看一下if的判断表达式,是不是少一个=,应该是判断表达式,却写成了赋值表达式了吧if (rr = SOCKET_ERROR)
if (-1)