全球旧事资料 分类
,当接收信息任务因没有信息而被阻塞时,不至于影响发送任务的执行。
那么,发送和接收两个任务是使用两个进程还是两个进程去完成呢?在网络通信中,端口地址是以进程为单位进程分配的,而一个进程与外界的消息发送与接收必须通过分配给它的同一个端口进行。因此,不能通过创建进程方式来解决上诉问题,因为两个进程会分别对应两个不同的端口,而发送和接收必须使用同一端口。线程不是资源分配的单位,所以如果使用两个线程不会对线程分配新的端口。因此,本实验需要使用两个线程去分别完成发送和接收信息的任务,这两个线程共享其进程拥有的统一个端口地址。由
621
f于创建进程的进程本身会作为一个线程来调度,所以只需要再创建一个线程专门负责接收信息就可以了。
因此,对于从每个客户端发来的请求,服务器端都要创建相应的线程去接收并处理;同理,对于客户端而言,也要创建一个线程去读取服务器端发来的信息。
721
f
3系统实现
31Li
ux提供的有关Socket的系统调用
1Socket作用:socket函数为客户机或服务器创建一个sokcet格式:i
tsocketi
tfamilyi
ttypei
tprotocol
参数说明:Family:表示地址族,可以去AF_UNLX和AF_INT。
其中,AF_UNLX只能够用于单一的UNIX系统进程间通信AF_INT是针对I
ter
et的,因而可以允许在远程主机之间通信,实验中使用AF_INT。Type:网络程序所采用的通信协议,可以取SOCK_STREAM或SOCK_DGRAM。其中,SOCK_STREAM表明使用的是TCP协议,这样提供按顺序的、可靠的、双向、面向连接的比特流;SOCKE_DGRAM表明使用的是UDP协议,这样只会提供定长、不可靠、无连接的通信。2bi
d
格式:i
tbi
di
tsockfdstructsockaddraddri
taddrle
参数说明:Sockfd:socket的文件描述符号。Sockaddr:表示名字所用的一个数据结构,用来保存地址包括IP地址和端口Addrle
设置结构大小长度。3liste
格式:i
tliste
i
tsockfdi
tbacklog作用:监听连接信号,和accepted函数合同。参数说明:Sockfd:表示socket调用返回的文件描述符。Backlog:表示接入队列允许的连接数目,大多数系统允许20个,也可以子定义5~10个。4accept
821
f
格式:
I
taccepti
tsockfdvoidaddri
taddrle

作用:与liste
函数合用,监听信息、接收客户端请求。
参数说明:
Sockfd:表示socket的文件描述符。
Addr:表示指向局部的数据结构structsockaddri
的指针。
Addrle
:表示地址的长度。
5co
ect
格式:
i
tco
ecti
tsockfdstructsockaddrserv_addri
taddrle

作用:在面向连接的系统中客户及连接服务r
好听全球资料 返回顶部