基于socket简易聊天程序毕业设计(论文)

2026/4/23 7:41:04

简单的socket程序

虽然很简单,但还是调试了很长时间。本科时候接触过socket——那个帅帅的刘老师的课,现在重新再捡起来。

程序中专门建立一个FunThread线程用来接收数据,实现双向通信,也可以连续发送、连续接收。代码贴上来,如果还能保留VA View那样的颜色区别就好看了,但是试了好几遍都不行server:

#include #include

#define PORT 6000 //服务器端口 #define MSGSIZE 1024 //收发缓冲区的大小 #pragma comment(lib, \链接静态库

DWORD WINAPI FunThread(LPVOID); //创建一个线程,专门用来接收数据 SOCKET sClient; //连接所用套节字 SOCKET sListen; //监听套接字 SOCKADDR_IN client; //保存客户的地址信息

int iaddrSize = sizeof(SOCKADDR_IN); int main() {

WSADATA wsaData; SOCKADDR_IN local;

char s_Message[MSGSIZE]; //收发缓冲区

WSAStartup(0x0202, &wsaData); //Initialize Windows socket library

sListen = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);//创建服务器监听套节字。TCP协议

local.sin_family = AF_INET; //AF_INET指明使用TCP/IP协议族 local.sin_port = htons(PORT);//指明连接服务器的端口号

local.sin_addr.s_addr = htonl(INADDR_ANY);//自动获取本机地址

bind(sListen, (struct sockaddr *)&local, sizeof(SOCKADDR_IN));//地址绑定到套接字

listen(sListen, 1);//开始监听

sClient = accept(sListen, (struct sockaddr *)&client, &iaddrSize);//建立连接

printf(\ntohs(client.sin_port));

HANDLE hThread=CreateThread(NULL,0,FunThread,0,0,0);//创建接收线程 CloseHandle(hThread);

while (TRUE) {

printf(\ //从键盘输入

gets(s_Message); //发送数据

send(sClient, s_Message, strlen(s_Message), 0); }

return 0; }

DWORD WINAPI FunThread(LPVOID) {

char c_Message[MSGSIZE]; //收发缓冲区 int ret; //接收字节的个数 while (TRUE) {

ret = recv(sClient, c_Message, MSGSIZE, 0);//接收数据 if(ret==SOCKET_ERROR) {

printf(\

sClient = accept(sListen, (struct sockaddr *)&client, &iaddrSize);//重新开始监听

printf(\

inet_ntoa(client.sin_addr), ntohs(client.sin_port));

memset(c_Message,0,1024);//将原来的client message归零 continue; }

c_Message[ret] = '\\0';

printf(\}

return 0;

} client:

#include #include

#define SERVER_ADDRESS \服务器端IP地址 #define PORT 6000 #define MSGSIZE 1024 #pragma comment(lib, \DWORD WINAPI FunThread(LPVOID);

SOCKET sClient; SOCKADDR_IN server;

int main() {

WSADATA wsaData;

char c_Message[MSGSIZE];

WSAStartup(0x0202, &wsaData);

sClient = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);

memset(&server, 0,

sizeof(SOCKADDR_IN)); //先将保存地址的server置为全0

server.sin_family =

PF_INET; //声明地址格式是TCP/IP地址格式 server.sin_port =

htons(PORT); //指明连接服务器的端口号

server.sin_addr.s_addr = inet_addr(SERVER_ADDRESS); //指明连接服务器的IP地址

connect(sClient, (struct sockaddr *)&server, sizeof(SOCKADDR_IN)); //连到刚才指明的服务器上

HANDLE hThread=CreateThread(NULL,0,FunThread,0,0,0); CloseHandle(hThread); while (TRUE) {

printf(\

gets(c_Message);

send(sClient, c_Message, strlen(c_Message), 0); if(!strcmp(c_Message,\自身退出 exit(1); }

// 释放连接和进行结束工作 closesocket(sClient); WSACleanup(); return 0; }

DWORD WINAPI FunThread(LPVOID) {

char s_Message[MSGSIZE]; int ret; while (TRUE) {

ret = recv(sClient, s_Message, MSGSIZE, 0); if(ret==SOCKET_ERROR) {

printf(\ exit(1); }

s_Message[ret] = '\\0';

printf(\

if(!strcmp(s_Message,\让client退出 exit(1); }

return 0; }

程序在VC++ 6.0环境下编译通过。先运行server端,再运行client,链接建立:


基于socket简易聊天程序毕业设计(论文).doc 将本文的Word文档下载到电脑
搜索更多关于: 基于socket简易聊天程序毕业设计(论文) 的文档
相关推荐
相关阅读
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 10

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219