本小节是 webrtc 前置内容,主要介绍 tcp 跟 udp 的 server 及 client 端实现代码。
tips:c 语言实现,demo 级别,仅供一对一通讯。
参考自慕课网 百万级高并发WebRTC流媒体服务器设计与开发
udp 是无连接的,绑定了端口后直接进行收发处理,不需要监听。
TCP连接相关结构体
1 | struct sockaddr_in{ |
Tcp_server 端的c实现demo
1 | // tcp_server.c |
Tcp_client 端的 c 实现demo
1 | // tcp_client.c |
UDP_server 端的 c 实现demo
1 | // upd_server.c |
Udp_client 端的 c 实现demo
1 | // udp_client.c |
现在问题来了:
使用 while(1)或者其他死循环接收信息的方式,在多 client 的场景下,仅第一个连接上的 client 可以跟 server 通讯,其他 client 虽然也能连接上,但无法传输数据。
解决办法通常有:
fork
select
epoll
IO事件库
详见下一节内容。