基于c语言的简易网络通信软件_第1页
基于c语言的简易网络通信软件_第2页
基于c语言的简易网络通信软件_第3页
基于c语言的简易网络通信软件_第4页
基于c语言的简易网络通信软件_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、#include #include #pragma comment (lib,ws2_32.lib)/#define clientsend_exit 1#define clientsend_tran 2#define clientsend_list 3/#define serversend_selfid 1#define serversend_newusr 2#define serversend_showmsg 3#define serversend_online 4/file *ioutfileserver;file *ioutfileclient;/struct creceivepacka

2、geint itype; /int itoid; /idint ifromid; /idchar cbuffer1024; /;/struct csendpackageint itype; /int icurconn; /char cbuffer1024; /;/struct cusersocketinfoint id; /idchar cdstip64; /ip,int iport; /socket susersocket; /;/struct cuserint id; /idchar cdstip64; /ip ;struct cuser usr20; /int bsend=0; /int

3、 imyself; /idint inew=0; /struct cusersocketinfo usrinfo20; /exitsystemvoid exitsystem()if(ioutfileserver!=null)fclose(ioutfileserver);if(ioutfileclient!=null)fclose(ioutfileclient);wsacleanup();exit(0);/threadproclientdword winapi threadproclient(lpvoid pparam)socket hsock=(socket)pparam;char crecv

4、buffer1024;char cshowbuffer1024;int num=0;if(hsock!=invalid_socket)printf(start:n);while(1)num = recv(hsock,crecvbuffer,1024,0);if(num = 0)crecvbuffernum=0;sprintf(cshowbuffer,to me : %sn,crecvbuffer);printf(%s,cshowbuffer);fwrite(cshowbuffer ,sizeof(char),strlen(cshowbuffer),ioutfileclient);fflush(

5、ioutfileclient);/fflush ,stdio.hint fflush(file*stream)if(strcmp(exit,crecvbuffer)=0)exitsystem();return 0; /threadproserverdword winapi threadproserver(lpvoid pparam)socket hsock=(socket)pparam;char crecvbuffer1024;char cshowbuffer1024;int num=0;if(hsock!=invalid_socket)printf(start:n);while(1)num

6、= recv(hsock,crecvbuffer,1024,0); / /rece=receiveif(num = 0)crecvbuffernum=0;sprintf(cshowbuffer,to me : %sn,crecvbuffer);printf(%s,cshowbuffer);/fwrite(cshowbuffer ,sizeof(char),strlen(cshowbuffer),ioutfileserver); /ioutfileserverfflush(ioutfileserver);if(strcmp(exit,crecvbuffer)=0)exitsystem();ret

7、urn 0; / void createserver()socket m_sockserver;struct sockaddr_in serveraddr; /struct sockaddr_in serveraddrfrom; /int iport=4600; /int ibindresult=-1; /int iwhilecount=200;struct hostent* localhost;char* localip;socket m_server;char cwelcombuffer=welcome to you!0;int len=sizeof(struct sockaddr);in

8、t iwhilelistencount=10;dword nthreadid = 0;int ires; /char csendbuffer1024; /char cshowbuffer1024; /ioutfileserver= fopen(messageserver.txt,a); /m_sockserver = socket ( af_inet,sock_stream, 0);printf(1024);scanf(%d,&iport);localhost = gethostbyname();localip = inet_ntoa (*(struct in_addr *)*localhos

9、t-h_addr_list);/serveraddr.sin_family = af_inet;serveraddr.sin_port = htons(iport); /serveraddr.sin_addr.s_un.s_addr = inet_addr(localip);/ibindresult=bind(m_sockserver,(struct sockaddr*)&serveraddr,sizeof(struct sockaddr);/while(ibindresult!=0 & iwhilecount 0)printf();scanf(%d,iport);/serveraddr.si

10、n_family = af_inet;serveraddr.sin_port = htons(iport); /serveraddr.sin_addr.s_un.s_addr = inet_addr(localip);/ip/ibindresult = bind(m_sockserver,(struct sockaddr*)&serveraddr,sizeof(struct sockaddr);iwhilecount-;if(iwhilecount0)printf(start listenn);listen(m_sockserver,0); /m_server=accept(m_sockser

11、ver,(struct sockaddr*)&serveraddrfrom,&len);if(m_server!=invalid_socket)/send(m_server,cwelcombuffer,sizeof(cwelcombuffer),0);/createthread(null,0,threadproserver,(lpvoid)m_server,0,&nthreadid );break;printf(.);iwhilelistencount-;if(iwhilelistencount0) /ires = send(m_server,csendbuffer,strlen(csendb

12、uffer),0);/if(ires0)printf();elsesprintf(cshowbuffer,send to : %sn,csendbuffer);printf(%s,cshowbuffer);fwrite(cshowbuffer ,sizeof(char),strlen(cshowbuffer),ioutfileserver);/if(strcmp(exit,csendbuffer)=0)exitsystem();int checkip(char *cip)char ipaddress128; /ipchar ipnumber4; /ipint isubip=0; /ip4int

13、 idot=0; /ip.int iresult=0;int iipresult=1;int i; /memset(ipnumber,0,4);strncpy(ipaddress,cip,128);for(i=0;i255)iipresult = 0;memset(ipnumber,0,4);elseipnumberisubip+=ipaddressi;if(idot=3 & iipresult!=0)iresult= 1;return iresult;/creatclientipvoid createclient()socket m_sockclient;struct sockaddr_in

14、 clientaddr;char cserverip128;int iwhileip=10; /int icnnres; /dword nthreadid = 0; /idchar csendbuffer1024; /char cshowbuffer1024; /char crecvbuffer1024; /int num; /int ires; /int iipres; /ipm_sockclient = socket ( af_inet,sock_stream, 0 );printf();scanf(%s,cserverip);/ipif(strlen(cserverip)=0)strcp

15、y(cserverip,); /elseiipres=checkip(cserverip);while(!iipres & iwhileip0)printf(n);scanf(%s,cserverip); /ipiipres=checkip(cserverip); /ipiwhileip-; /iwhileipif(iwhileip 0 )printf(receive from server : %sn,crecvbuffer); /crecevbuffer/createthread(null,0,threadproclient,(lpvoid)m_sockclient,0,

16、&nthreadid );while(1)memset(csendbuffer,0,1024);scanf(%s,csendbuffer);if(strlen(csendbuffer)0) /ires=send(m_sockclient,csendbuffer,strlen(csendbuffer),0);if(ires=0) /p = (struct creceivepackage*)crecvbuffer;switch(p-itype)case clientsend_tran: / clientsend_tranlatesfor(m=0;mitoid)/stmp=usrinfom.suse

17、rsocket;memset(&sp,0,sizeof(sp);sp.itype=serversend_showmsg;strcpy(sp.cbuffer,p-cbuffer);ires = send(stmp,(char*)&sp,sizeof(sp),0); /if(ires0)printf(n);break;case clientsend_list: /memset(&sp,0,sizeof(sp);for(j=0;jifromid & usrinfoj.id!=0)sp.cbufferj=usrinfoj.id;sp.itype=serversend_online;send(hsock

18、,(char*)&sp,sizeof(sp),0);break;case clientsend_exit:printf(n);return 0; /break;return 0;/notyifyuprocdword winapi notyifyproc(lpvoid pparam) /ipvoidstruct csendpackage sp; /socket stemp; /socketint *p; /idint j; /p=(int*)pparam; /idfor(j=0;jh_addr_list);/ipserveraddr.sin_family = af_inet;serveraddr

19、.sin_port = htons(4600); /serveraddr.sin_addr.s_un.s_addr = inet_addr(localip); /ip/m_sockserver = socket ( af_inet,sock_stream, 0);if(m_sockserver = invalid_socket) /inualid_socketprintf(n);exit(0);/ipires=bind(m_sockserver,(struct sockaddr*)&serveraddr,sizeof(struct sockaddr);if(ires 0)printf(n);e

20、xit(0);/while(1)listen(m_sockserver,0); /m_server=accept(m_sockserver,(struct sockaddr*)&serveraddrfrom,&len);/if(m_server!=invalid_socket)printf(); /if(iconnect 0)createthread(null,0,notyifyproc,(lpvoid)&id,0,&nthreadid );iconnect+;elsesend(m_server,cwarnbuffer,sizeof(cwarnbuffer),0); /wsacleanup()

21、;dword winapi threadtranclient(lpvoid pparam)socket hsock=(socket)pparam;int i; /char crecvbuffer2048; /intnum; /char ctmp2; /idstruct creceivepackage sp; /struct csendpackage *p; /int itemp; /idwhile(1)num = recv(hsock,crecvbuffer,2048,0);/if(num=0)p = (struct csendpackage*)crecvbuffer;if(p-itype=s

22、erversend_selfid)imyself=atoi(p-cbuffer);sp.itype=clientsend_list; /send(hsock,(char*)&sp,sizeof(sp),0);if(p-itype=serversend_newusr) /iditemp = atoi(p-cbuffer);usrinew+.id=itemp; /inewprintf(,n);bsend=1; /if(p-itype=serversend_showmsg) /printf(rec:%sn,p-cbuffer);if(p-itype=serversend_online) /for(i=0;icbufferi!=imyself & p-cbufferi!=0)usrinew+.id=p-cbufferi;printf(,n);bsend=1;/if(!bsend)printf(n);return 0;void exittransystem()wsacleanup();exit(0);void createtranclient()socket m_sockclient; /socketstruct sockaddr_in clientaddr; /int ires;/char csendbuffer1024; /d

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论