发布时间 : 星期六 文章基于Socket的网络聊天程序设计报告更新完毕开始阅读
{ sprintf(recvBuf, \ %s\
(addrClient.sin_addr), tempBuf); printf(\
printf(\ \ gets(sendBuf);
sendto(sockSrv, sendBuf, strlen(sendBuf) + 1, 0, (sockaddr*) &addrClient, len); } else // 若接收到'q',则退出聊天 { printf(\ inet_ntoa(addrClient.sin_addr)); sendto(sockSrv, \&addrClient, len); break; } }
closesocket(sockSrv); WSACleanup(); }
客户端代码:
#include
#include
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 sockClient = socket(AF_INET, SOCK_DGRAM, 0);
SOCKADDR_IN addrSrv;
addrSrv.sin_addr.S_un.S_addr = inet_addr(\ //htonl htons inet_addr inet_ntoa addrSrv.sin_family = AF_INET;
addrSrv.sin_port = htons(6666); //设置同样的端口号6666
char sendBuf[100]; char tempBuf[200]; char recvBuf[100];
int len = sizeof(sockaddr);
while(1) {
printf(\ \ gets(sendBuf);
sendto(sockClient, sendBuf, strlen(sendBuf) + 1, 0, (sockaddr*) &addrSrv, len);
recvfrom(sockClient, tempBuf, strlen(tempBuf), 0, (sockaddr*) &addrSrv, &len);
if('q' != tempBuf[0]) { sprintf(recvBuf, \ %s\(addrSrv.sin_addr), tempBuf); printf(\ }
else // 若接收到'q',则退出聊天 { printf(\ sendto(sockClient, \&addrSrv, len); break; } }
closesocket(sockClient); WSACleanup(); }
运行结果截图: