1 / 7
文档名称:

Linux课程设计报告.doc

格式:doc   大小:22KB   页数:7页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

Linux课程设计报告.doc

上传人:annimy 2021/12/3 文件大小:22 KB

下载得到文件列表

Linux课程设计报告.doc

文档介绍

文档介绍:Linux课程设计报告
班级:电子信息科学与技术一班_
一、设计目标ﻩ
学生端:.修改信息
原理分析及实现过程
Socket通信原理:
操作系统的,可以通过管道、命名管道、信号等实现通信,网间进程通信就要通过Socket进行通信.
网间进程通信时通过端口号来唯一标识主机的进程。端口号被分为三类,一类是0~1023范围内的端口,被称为熟知端口,这些端口号已被分配给了因特网上的著名应用程序,第二类端口被称为登记端口,范围是1024~49151,,数值为49152~65535,留给客户进程选择暂时使用。
网络应用进程间通信普遍采用客户/服务器交互模式,该模式通常简记为C/S模式。在该模式中,通信双方中发起通信的一方被称为客户端,被动接受通信请求的一方被称为服务器。服务器方必须先启动,.
本系统是基于TCP/IP协议栈使用C语言来实现进程间的通信。
进程通信过程:
服务器端:
1.先用socket函数来建立一个套接字,用这个套接字完成通信的监听.
2。用bind函数来绑定一个端口号和IP地址。
3.调用listen函数,使服务器的这个端口和IP处于监听状态,等待客户机的连接。
4。用accept函数来接受远程计算机的连接,建立起与客户机之间的通信。
主要代码解析:
#define PORT 4000 //定义端口号为4000,使用宏定义方便以后的修改
int main(int argc, char **argv){

ﻩint sockfd = -1, ret = —1;
ﻩstruct sockaddr_in sockaddr;
if((sockfd = socket(AF_INET, SOCK_STREAM, 0)) 〈 0){//使用socket()建立套接字,并返回套接字号
ﻩﻩperror("create socket failed");
ﻩ return —1;
}
ﻩmemset(&sockaddr, 0, sizeof(sockaddr));
ﻩsockaddr。sin_family = AF_INET;    //地址信息
ﻩsockaddr。sin_port = htons((uint16_t)PORT);
ﻩsockaddr。sin_addr.s_addr = INADDR_ANY;
ﻩif((ret = bind(sockfd, (const struct sockaddr *)&sockaddr, //套接字和本地地址绑定
ﻩsizeof(sockaddr))) 〈 0){
ﻩﻩperror("bind failed");
ﻩﻩreturn -1;
ﻩ}
ﻩif(listen(sockfd, MAX_UNRESOLVE_LINK_NUMBER) 〈 0){//通知服务器准备接受连接
ﻩﻩperror(”listen failed");
ﻩﻩreturn -1;
ﻩ}
ﻩclntfd = accept(sockfd, (struct sockaddr *)&clntaddr, &len