基于Socket的网络聊天程序设计报告

发布时间 : 星期六 文章基于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(); }

运行结果截图:

联系合同范文客服:xxxxx#qq.com(#替换为@)