基于socket简易聊天程序

上传人:夏** 文档编号:488011049 上传时间:2024-01-16 格式:DOC 页数:9 大小:299.50KB
返回 下载 相关 举报
基于socket简易聊天程序_第1页
第1页 / 共9页
基于socket简易聊天程序_第2页
第2页 / 共9页
基于socket简易聊天程序_第3页
第3页 / 共9页
基于socket简易聊天程序_第4页
第4页 / 共9页
基于socket简易聊天程序_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《基于socket简易聊天程序》由会员分享,可在线阅读,更多相关《基于socket简易聊天程序(9页珍藏版)》请在金锄头文库上搜索。

1、简朴的sockt程序-0113 2:1虽然很简朴,但还是调试了很长时间。本科时候接触过skt那个帅帅的刘教师的课,目前重新再拾起来。程序中专门建立一种FunThr线程用来接受数据,实现双向通信,也可以持续发送、持续接受。代码贴上来,如果还能保存VView那样的颜色区别就好看了,但是试了好几遍都不行sere:#nclude inud die PORT 000 /服务器端口fine MIE 12 /收发缓冲区的大小#praga coment(li, w2_3.lib) /链接静态库DWORD WIAP unThad(LPOD); /创立一种线程,专门用来接受数据SCT sClent; /连接所用套

2、节字SOCET sListn; /监听套接字SOKDRIN clnt; /保存客户的地址信息tiadrize= sieof(SODDR_I);intmi()WDAT wsDa;SOADDRIN local;chas_MssMSIZE; /收发缓冲区taup(0x0202, &wsaData);/Iitize inw soket lbraryListe = sockt(AF_IET, SOCK_STREA, PROTO_T);/创立服务器监听套节字。TCP合同loca.sin_fai =AF_INET; /AFINE指明使用P/IP合同族loal.sin_pot = tons(PORT);/指明

3、连接服务器的端标语calsin_addr._add = hol(ADDR_AN);/自动获取本机地址bind(sistn, (struct sokaddr *)&lol, izeo(SOCKDDR_IN));/地址绑定到套接字sten(sLstn, 1);/开始监听Clint =accept(Listen,(strt sockar*)&lent, &iaddrSie);/建立连接rintf(Accpe client:%:%dn, ne_noa(ien.s_addr), nths(liesn_pot);HANDLE hTrrteThrad(NULL,Fuhead,0,0,);/创立接受线程Clo

4、seHandle(Thread);whle (TRUE) printf(ServSen:); /从键盘输入 gts(ese); /发送数据sed(Client, _ae, srlen(sesae), ); eturn0; DOR WINAPIFunThred(PVOD) ca cMessageMSGSIZ; /收发缓冲区ine; 接受字节的个数whil (TRE) ret = rcv(sClient, c_Messag,MSGSZ, 0);/接受数据if(ret=SOCKET_ERROR) printf(c iclosed!); sCien=accpt(Liste, (struct sckdr

5、*)&cint, &iaddrSize);/重新开始监听 prntf(nAcpe newclient:%s:%d, netnto(clent.si_adr),tos(lent.sn_ort); eme(c_essa,0,124);/将本来的clietmessage归零 continue; _Mageret = 0; printf(nRceived: sn, c_Meg); reun 0; client:#inclue WI2.#incld #deie ERV_ADRESS 127.0.0.1 /服务器端I地址#define RT 600 #efinSZ 2#ragma comment(i, s

6、2_3.) DWRD WINPI Fned(LPOD); SOCKT sClint; SCDRINver;nt ain() WSAATA wsaDaa;har cMessageMSGSZE;SAStatp(002, &wDaa);sent = sockt(F_IET,SOCK_STREAM, PPROTO_TCP);emset(&sere, 0,sizeof(SKDDR_I)); /先将保存地址的rve置为全ever.sinamiy =F_IET; /声明地址格式是TCP/IP地址格式servr.sinport = hton(OR); /指明连接服务器的端标语server.sn_addr.s_

7、adr =inet_adr(SRVER_ADDRESS); /指明连接服务器的IP地址cnect(sClen, (sruc sckaddr*)serve, izeof(SOKADR_IN)); /连到刚刚指明的服务器上HAL hTredreateread(NUL,,FnThread,0,0);Closeal(Thead);while (TU) printf(lient ed:);gt(c_Message); snd(en, cMessae, strlen(c_Mssae), ); i(!tcp(c_Mesag,eit)/clt自身退出exit(1);/释放连接和进行结束工作cseock(sCl

8、int);WSCeanup();eurn 0;WOR INAI Fnred(LPVOID)cha s_essgeSGSIZE;in ret; whe(TUE) re =recv(sClient, _ssge, MSGSIZE,0); f(retSOCKE_EROR) printf(Sever s osed!);ext(1); _Messeet = 0;rinf(nReeived:%sn, s_Mesag); if(!tcp(s_ssge,xit))/eer让client退出 it(1);retur;程序在C+ 6.环境下编译通过。先运营sve端,再运营lient,链接建立:lt和servr可进行双通信,可持续发送、接受;clent可自行退出,也可由rr强制退出,发送exi命令即可:cent退出后,serr重新建立监听,有新的cien运营时,再次建立新的连接:注意:clnt的端标语是随机的。服务器关闭时,client自动退出:

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号