教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 高等教育 >

江南大学TCPIP群聊私聊设计(2)

来源:网络收集 时间:2026-08-11
导读: } if (WSAStartup(MAKEWORD(2, 2), ser_server.sin_port = htons(iPort); ser_server.sin_addr.s_addr = inet_addr(argv); sClient = socket(AF_INET, SOCK_DGRAM, 0); if (sClient == INVALID_SOCKET) { } printf(

}

if (WSAStartup(MAKEWORD(2, 2), &WSAData) != 0) {printf(\ }

ser_server.sin_family = AF_INET; ser_server.sin_port = htons(iPort);

ser_server.sin_addr.s_addr = inet_addr(argv); sClient = socket(AF_INET, SOCK_DGRAM, 0); if (sClient == INVALID_SOCKET) { }

printf(\return; return;

3. 客户端注册函数,此函数为当前用户输入注册信息,并将此信息存储至user结构体链表中。

void regist() {

char username[10]; char passward[10];

printf(\请输入注册用户名:\\n\scanf(\printf(\请输入注册密码:\\n\scanf(\

struct hostent *phostinfo = gethostbyname(\

char *p = inet_ntoa (* ((struct in_addr *)(*phostinfo->h_addr_list)) ); strcpy(user->username,username); strcpy(user->passward,passward); //包含ip信息

strncpy(user->ip, p, sizeof(user->ip)- 1);

}

user->ip[19] = '\\0'; printf(%user->id=i; i = i+1;

user->isOnline=0; //表示此用户已经注册过

4. 客户端登陆函数,此函数为当前用户输入登陆信息,并将此信息存储至userlogin结构体中。

//登陆函数 void login() { }

5. 客户端检测函数:此函数检测客户端的登陆用户名和密码是否正确,通过与服务器存储的所有用户比较得出此用户的用户名和密码是否正确,如果正确,user_state返回2.

void check(){

int i=1; int iSend_server; char username[10]; char passward[10];

printf(\请输入登陆用户名:\\n\scanf(\printf(\请输入登陆密码:\\n\scanf(\

struct hostent *phostinfo = gethostbyname(\

char *p = inet_ntoa (* ((struct in_addr *)(*phostinfo->h_addr_list)) ); strcpy(userlogin.username,username); strcpy(userlogin.passward,passward); strncpy(user->ip, p, sizeof(user->ip)- 1); user->ip[19] = '\\0';

int iRec_server;

int iLen = sizeof(ser_server); char buf_recv[1]; user= head.next; iRec_server

=

recvfrom(sClient,buf_recv,sizeof(buf_recv),0,(struct

sockaddr*)&ser_server,&iLen);

}

6. 客户端发送函数:此函数为客户端向服务器发送注册和登陆消息,由于发送的是结构体链表,故先将其转换为指针数组发送,再由服务器将其转换为结构体;

void send_loginMessage(char argv_server[],struct users *usermessage) {

int buf_len; int pos = 0;

int iSend_userMessage; buf_len = sizeof(users);

char *buf_send = (char *)malloc(buf_len); memcpy(buf_send,usermessage,buf_len); while(pos

iSend_userMessage = sendto(sClient,buf_send+pos,buf_len,0,(struct user_state = (int)buf_recv[0]; if(user_state ==2){ } send();

printf(\登陆成功:\\n\

sockaddr*)&ser_server,sizeof(ser_server));

if(iSend_userMessage==SOCKET_ERROR){ }

printf(\break;

}

}

pos += iSend_userMessage;

7. 客户端发送群聊消息,通过选择群聊,服务器向所有在线人员发送消息。

void send_message(char *argv_local){

int i = 1; int iRecv; int iSend_server;

char buf_s[DATA_BUFFER]; int iLen = sizeof(ser_server); int iLens = sizeof(users); if(user_state ==2){

while(i != 0){

printf(\char buf_send[SEND_NAME]; scanf(\strcat(buf_send, buf_s);

iSend_server = sendto(sClient, buf_send, sizeof(buf_send), 0, (struct

sockaddr*)&ser_server, iLen);

}

}

if(iSend_server==SOCKET_ERROR){ }

//发送IP到服务器

if (stricmp(buf_s, \ }

break;

printf(\

}

else if(user_state == 1)

printf(\用户登录失败,此用户已经登录.\\n\

else

printf(\用户登录失败,未注册或密码错误.\\n\

8. 客户端发送私聊消息:如果客户端通过提示选择私聊,将得到服务器发送回的当前在线人员,选择当前在线人员开启私聊。

void send_message_s(char *argv_local){

int i = 1; int iRecv; int pos = 0; int iSend_server;

char buf_s[DATA_BUFFER]; int iLens = sizeof(users); int iLen = sizeof(ser_server); if(user_state ==2){

while(i != 0){

printf(\

char buf_send[SEND_NAME] = \涂序文:\scanf(\strcat(buf_send, buf_s);

iSend_server = sendto(sClient, buf_send, sizeof(buf_send), 0, (struct

sockaddr*)&ser_server, iLen);

if(iSend_server==SOCKET_ERROR){ }

char *buf_rev = (char *)malloc(iLens); while(pos

iRecv

=

printf(\

recvfrom(sClient,buf_rev+pos,iLens,0,(sockaddr*)&ser_server,&iLen);

…… 此处隐藏:1159字,全部文档内容请下载后查看。喜欢就下载吧 ……
江南大学TCPIP群聊私聊设计(2).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/615187.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)