基于Linux的Socket编程之TCP全双工Server-Client聊天程序
来源:互联网 发布:数据库常用地约束包括 编辑:程序博客网 时间:2024/05/22 05:09
转载:http://blog.csdn.net/apollon_krj/article/details/53437764#0-tsina-1-58570-397232819ff9a47a7b7e80a40613cfe1
一、引言:
由于accept函数、read、write、recv、send等函数都是是阻塞式的,在同一个进程之中,只要有任何一个函数没有执行完毕,处于阻塞状态,之后的函数与功能就不能处理,很难实现点对点的Server-Client全双工通信。因为全双工通信是非阻塞式的通信方式,即使对方没有回复消息,都可以随时发送。如果只是电报机式的半双工通信,之前已经基本实现:基于Linux的SOCKET编程之TCP半双工Client-Server聊天程序
而对于QQ点对点聊天式的全双工通信,又该怎样实现呢?对于当前所学只能想到使用fork函数创建一个子进程,其中父进程用来处理发(或者收),而子进程用来处理收(或者发)的过程。fork函数的一些基本的使用可参照:进程创建与fork()的恩怨情仇
二、测试代码:
测试环境(Redhat 6.4)
1、客户端(Client):
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
2、服务器(Server):
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
收到对端结束信息(NULL信息)的进程要向等待发送的进程发送一个结束通信的信号,回调函数处理使得等待输入的进程结束,否则该进程会一直等待,直到有输入(但此时的输入已经没有意义,所以应提早结束,而不是一直等待)。
三、测试结果:
这个不厚道的服务器结束了通信:
阅读全文
0 0
- 基于Linux的Socket编程之TCP全双工Server-Client聊天程序
- 基于Linux的Socket编程之TCP全双工Server-Client聊天程序
- 基于Linux的SOCKET编程之TCP半双工Client-Server聊天程序
- 基于Linux的SOCKET编程之TCP半双工Client-Server聊天程序
- python socket编程实现半双工与全双工聊天
- Linux Linux函数 Linux聊天程序 基于socket的TCP(有连接的)聊天程序
- Linux Linux函数 Linux聊天程序 基于socket的TCP(有连接的)聊天程序
- Java基于Tcp的socket聊天程序
- Java Socket编程 - 基于TCP方式的客户服务器聊天程序
- TCP的socket编程中“全双工的字节流”含义的深刻理解
- python全双工聊天窗口编程学习之旅
- Socket聊天程序(Client)
- 实现基于TCP/IP协议的简单Client/Server程序
- 套接字(socket)编程简单实现server-client聊天程序
- 基于TCP协议实现客户服务器的全双工通信
- Linux下基于TCP的Socket编程
- python socket编程 半双工聊天
- Linux网络编程之聊天程序(TCP协议之select)
- 第二章 身份验证——《跟我学Shiro》
- 在线工具地址搜集(三)
- 百度SEO一本通
- 杂志征稿费用多少
- Solr 配置文件之core.properties、solr.xml和Config Sets
- 基于Linux的Socket编程之TCP全双工Server-Client聊天程序
- CC2650/CC2640 串口烧录 Serial Bootloader
- 数据结构 (计算机存储、组织数据方式)
- word2vec
- 电脑磁盘分区详解
- desktop.ini
- 内核链表学习注释
- 守护进程
- log4j配置文件全解析