linux仿QQ通信系统课程设计最终修改版Word文件下载.docx

上传人:b****4 文档编号:14285320 上传时间:2022-10-21 格式:DOCX 页数:13 大小:19.84KB
下载 相关 举报
linux仿QQ通信系统课程设计最终修改版Word文件下载.docx_第1页
第1页 / 共13页
linux仿QQ通信系统课程设计最终修改版Word文件下载.docx_第2页
第2页 / 共13页
linux仿QQ通信系统课程设计最终修改版Word文件下载.docx_第3页
第3页 / 共13页
linux仿QQ通信系统课程设计最终修改版Word文件下载.docx_第4页
第4页 / 共13页
linux仿QQ通信系统课程设计最终修改版Word文件下载.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

linux仿QQ通信系统课程设计最终修改版Word文件下载.docx

《linux仿QQ通信系统课程设计最终修改版Word文件下载.docx》由会员分享,可在线阅读,更多相关《linux仿QQ通信系统课程设计最终修改版Word文件下载.docx(13页珍藏版)》请在冰豆网上搜索。

linux仿QQ通信系统课程设计最终修改版Word文件下载.docx

——接受来自客户端的连接请求〔ACCEPT,并创建接收进程;

——关闭套接字〔CLOSESOCKET。

四、详细设计

下面是实现TCP通信和UDP通信的流程

TCP通信程序的逻辑框图

UDP通信程序的逻辑框图

五、源程序和运行结果清单

#include<

stdio.h>

stdlib.h>

unistd.h>

string.h>

sys/socket.h>

netinet/in.h>

arpa/inet.h>

fcntl.h>

//文件操作头文件

pthread.h>

sched.h>

voidMenu<

>

{

printf<

"

\t\t|================================================\n"

;

\t\t|欢迎进入系统\n"

\t\t|1.UDP通信\n"

\t\t|2.TCP通信\n"

\t\t|3.文件传输\n"

\t\t|4.exit\n"

\t\t|================================================\n"

}

void*recver<

void*data>

intfd1;

//文件描述符

structsockaddr_inaddr1;

structsockaddr_inaddr_send1;

//发送者地址对象

socklen_tlen1;

//socket_t类型的变量len

intr1;

//结果

charbuf1[200];

//1.socket

fd1=socket<

AF_INET,SOCK_DGRAM,0>

/*AF是网络传输,so..是udp报文传输,0是自动比配*/

if<

fd1==-1>

printf<

socketerr:

%m\n"

exit<

-1>

Asocketok\n"

//2.bind

addr1.sin_family=AF_INET;

//全大写模式的是宏状态

addr1.sin_port=htons<

9999>

inet_aton<

127.0.0.1"

&

addr1.sin_addr>

r1=bind<

fd1,<

structsockaddr*>

&

addr1,sizeof<

addr1>

if<

r1==-1>

Abinderr:

Abindok\n"

//3.recv

while<

1>

{

len1=sizeof<

addr_send1>

r1=recvfrom<

fd1,buf1,sizeof<

buf1>

-1,0,<

addr_send1,&

len1>

/*从fd里取值给buf,接收从接收者送来到信息放到len来*/

r1>

0>

buf1[r1]=0;

收到来自IP=%s,PORT=%hu的信息,内容如下:

\n%s\n"

inet_ntoa<

addr_send1.sin_addr>

ntohs<

addr_send1.sin_port>

buf1>

//ntoa网络字节序转化为网络字符串

}

r1==0>

//对方关闭

关闭\n"

break;

r1<

网络链接失败\n"

//4.close

close<

fd1>

void*sender<

/*AF是网络传输,so..是udp报文传输,0是自动僻配*/

//2.发送信息目标addr

{

scanf<

%s"

buf1>

r1=sendto<

fd1,buf1,strlen<

0,<

/*strlen确定字符串里有效字符长度*/

intmain<

intq;

Menu<

option:

\n"

%d"

q>

switch<

case<

:

printf<

UDP通信"

pthread_ttid;

//声明整型tid

pthread_ttid2;

pthread_create<

tid,0,recver,NULL>

/*在线/进程当中创建线程,传地址是为了改变tid是指向线程的标识符的指针,0为设置线程的属性,run线程运行函数的起始地址,传给函数到参数*/

tid2,0,sender,NULL>

while<

break;

2>

TCP通信\n"

if<

fork<

{

intserverfd;

//服务器文件描述符

intcfd;

//客户端文件描述符

structsockaddr_insadr;

//服务器地址

structsockaddr_incadr;

//客户端地址

socklen_tlen;

intr;

inta;

charbuf[200];

serverfd=socket<

AF_INET,SOCK_STREAM,0>

serverfd==-1>

socketerr%m\n"

serversocketok!

sadr.sin_family=AF_INET;

sadr.sin_port=htons<

9997>

sadr.sin_addr>

r=bind<

serverfd,<

sadr,sizeof<

sadr>

r==-1>

serverbinderr%m\n"

serverbindok\n"

//3.listen

r=listen<

serverfd,10>

//监听服务器

serverlistenerr%m\n"

serverlistenok\n"

//4.accept

len=sizeof<

cadr>

cfd=accept<

cadr,&

len>

有人链接%d,IP:

%s,Port:

%u\n"

cfd,

cadr.sin_addr>

ntohs<

cadr.sin_port>

//5.action

r=recv<

cfd,buf,sizeof<

buf>

0>

buf[r]=0;

r>

收到数据:

%s\n"

buf>

r==0>

链接断开\n"

r<

网络故障\n"

}

close<

cfd>

serverfd>

return;

}

else

intfd;

structsockaddr_inaddr;

ints=0;

fd=socket<

fd==-1>

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 其它模板

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1