日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

socket聊天室

發(fā)布時間:2025/3/21 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 socket聊天室 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

原文地址:https://blog.csdn.net/xiaoquantouer/article/details/58001960

服務(wù)端

#define _WINSOCK_DEPRECATED_NO_WARNINGS #include <stdio.h> #include <winsock2.h> #pragma comment(lib, "ws2_32.lib") //加載ws2_32.lib庫int main(int argc, char *argv[]) {//加載套接字WORD sockVersion = MAKEWORD(2, 2);//指定socket版本2.2WSADATA wsaData;//存儲被WSAStartup函數(shù)調(diào)用后返回的Windows Sockets數(shù)據(jù)if (WSAStartup(sockVersion, &wsaData) != 0) return 0;//創(chuàng)建服務(wù)端socket,三個參數(shù)分別代表IP地址族,流式套接字,TCP協(xié)議SOCKET slisten = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);if (slisten == INVALID_SOCKET){printf("socket error!");return 0;}//綁定服務(wù)端ip和端口sockaddr_in sin;//存放了地址族、端口、ip地址,用來處理通信地址sin.sin_family = AF_INET;//ip地址族sin.sin_port = htons(8888);//轉(zhuǎn)換網(wǎng)絡(luò)編碼,偵聽本地8888端口sin.sin_addr.S_un.S_addr = INADDR_ANY;//接收任意地址的連接if (bind(slisten, (LPSOCKADDR)&sin, sizeof(sin)) == SOCKET_ERROR){printf("bind error!");}//開始偵聽if (listen(slisten, 5) == SOCKET_ERROR){printf("listen error!");return 0;}SOCKET sClient;//創(chuàng)建客戶端socketsockaddr_in remoteAddr;//客戶端的地址信息int nAddrlen = sizeof(remoteAddr);char revData[255];//接收數(shù)據(jù)緩沖區(qū)//循環(huán)接收數(shù)據(jù)while (1){printf("waiting...\n");//等待連接,返回客戶端socketsClient = accept(slisten, (SOCKADDR *)&remoteAddr, &nAddrlen);if (sClient == INVALID_SOCKET){printf("accept error!");continue;}printf("Connection successful:%s\n", inet_ntoa(remoteAddr.sin_addr));//接收數(shù)據(jù)int ret = recv(sClient, revData, 255, 0);//若無錯誤,返回讀入字節(jié)數(shù)if (ret > 0){revData[ret] = '\0';printf("%s\n", revData);}//發(fā)送數(shù)據(jù)char sendData[255];gets_s(sendData);send(sClient, sendData, strlen(sendData), 0);closesocket(sClient);}closesocket(slisten);//關(guān)閉服務(wù)端socketWSACleanup();return 0; }

客戶端

#define _WINSOCK_DEPRECATED_NO_WARNINGS #include<winsock2.h> #include<stdio.h> #pragma comment(lib, "ws2_32.lib") int main() {WORD sockVersion = MAKEWORD(2, 2);WSADATA data;if (WSAStartup(sockVersion, &data) != 0) return 0;while (true) {SOCKET sclient = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);if (sclient == INVALID_SOCKET){printf("invalid socket!");return 0;}sockaddr_in serAddr;//處理服務(wù)端地址的結(jié)構(gòu),包含地址族、端口、ip地址serAddr.sin_family = AF_INET;//IP地址族serAddr.sin_port = htons(8888);//服務(wù)端端口serAddr.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");//服務(wù)端ipif (connect(sclient, (sockaddr *)&serAddr, sizeof(serAddr)) == SOCKET_ERROR){printf("connect error !");closesocket(sclient);return 0;}//發(fā)送數(shù)據(jù)char sendData[255];gets_s(sendData);send(sclient, sendData, strlen(sendData), 0); //接收數(shù)據(jù)char recData[255];int ret = recv(sclient, recData, 255, 0);if (ret>0) {recData[ret] = '\0';printf(recData);}closesocket(sclient);}WSACleanup();return 0; }

總結(jié)

以上是生活随笔為你收集整理的socket聊天室的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。