发布时间 : 星期六 文章基于套接字的聊天程序设计更新完毕开始阅读b1a7fec80c22590102029db7
进程连接请求
if (sockConn == INVALID_SOCKET) {
cout<<\ break; }
char recvBuf[1024] = \
iLen = recv(sockConn,recvBuf,1024,0);//接收数据 if (iLen == SOCKET_ERROR) {
cout<<\ break; }
recvBuf[iLen] = '\\0'; cout< char sendBuf[1024],hostname[100]; if (gethostname(hostname,100) != 0) //获取主机名称 strcpy(hostname,\ sprintf(sendBuf,\%s to %s!\ err = send(sockConn,sendBuf,strlen(sendBuf)+1,0); //发送数据 if (err == SOCKET_ERROR) { cout<<\ break; } while(1 ) { char recvBuf[1024] = \ iLen = recv(sockConn,recvBuf,1024,0);//接收数据 if (iLen == SOCKET_ERROR) { cout<<\ break; } recvBuf[iLen] = '\\0'; cout< - 8 - / 39 connected cout<<\请输入你要发送的消息,输入E退出\ char sendBuf[1024]; cin>>sendBuf; string str=sendBuf; if(str.compare(\ { err = send(sockConn,sendBuf,strlen(sendBuf)+1,0); //发送数据 if (err == SOCKET_ERROR) { cout<<\ break; } } else { break; } } closesocket(sockConn); //关闭套接字 cout<<\ } WSACleanup(); return 0; } 3.1.2 客户端设计: #include int main(int argc, char *argv[]) { const int DEFAULT_PORT = 5000; WORD wVersionRequested; WSADATA wsaData; int err,iLen; wVersionRequested=MAKEWORD( 2, 2 ); err = WSAStartup( wVersionRequested, &wsaData ); if ( err != 0 ) { cout<<\加载WinSock失败!\ return 0; - 9 - / 39 } //创建用于连接的套接字 SOCKET sockClient = socket(AF_INET,SOCK_STREAM,0); if (sockClient == INVALID_SOCKET) { cout<<\ return 0; } SOCKADDR_IN addrSrv; //string ip; char cip[20]=\ int port; char type; cout <<\服务器基本设置为 ip:127.0.0.1 端口:5000\ cout <<\是否从新设置:Y or N\ cin>>type; if(type=='Y') { cout<<\ cin>>cip; //ip=cip; cout<<\端口:\ cin>>port; addrSrv.sin_family = AF_INET; addrSrv.sin_addr.S_un.S_addr = inet_addr(cip); addrSrv.sin_port = htons(port); } else { addrSrv.sin_family = AF_INET; addrSrv.sin_addr.S_un.S_addr = inet_addr(\ addrSrv.sin_port = htons(DEFAULT_PORT); } err = connect(sockClient,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));//请求连接服务器进程 if ( err == INVALID_SOCKET ) { cout<<\ return 0; } - 10 - / 39 char sendBuf[1024],hostname[100]; if (gethostname(hostname,100) != 0) //获取主机名称 strcpy(hostname,\strcpy(sendBuf,hostname); strcat(sendBuf,\ err = send(sockClient,sendBuf,strlen(sendBuf)+1,0); //发送数据 if (err == SOCKET_ERROR) { cout<<\ return 0; } char recvBuf[1024]; iLen = recv(sockClient,recvBuf,1024,0); //接收数据 if (iLen == 0) return 0; else if (iLen == SOCKET_ERROR) { cout<<\ return 0; } else { recvBuf[iLen] = '\\0'; cout< while(1) { char sendBuf[1024]; cout<<\请输入你要发送的消息,输入E退出\ cin>>sendBuf; string str=sendBuf; if(str.compare(\ { err = send(sockClient,sendBuf,strlen(sendBuf)+1,0); //发送数据 if (err == SOCKET_ERROR) { cout<<\ return 0; } } - 11 - / 39