3个学习Socket编程的简单例子:TCP Server/Client, Select

      以前都是采用ACE的编写网络应用,最近由于工作需要,需要直接只用socket接口编写CS的代码,重新学习这方面的知识,给出自己所用到的3个简单例子,都是拷贝别人的程序。如果你能完全理解这3个例子,估计socket编程就已经基本入门了。

      建议:1) 多多查查所用到的网络接口; 2) 最好有一本书,如UNIX环境高级编程,UNIX网络编程,可查询;3) 可以直接使用书上的例子更好。

 

      TCP Client代码:

 

      TCP Server:

 

      采用Select的TCP Server:

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
lwip是一个轻量级的TCP/IP协议栈,用于嵌入式系统中。它提供了一套API,可以用于在嵌入式设备上进行网络通信。其中,socket是lwip中用于进行网络通信的接口之一。 在lwip中,可以使用select函数来实现多路复用,即同时监听多个socket的可读、可写和异常事件。通过select函数,可以在有多个客户端连接时,同时处理多个连接。 根据引用\[1\]中提供的客户端和服务器流程图,可以看出,在lwip中,客户端和服务器之间的通信流程如下: 1. 服务器创建socket,并绑定到指定的IP地址和端口号。 2. 服务器调用listen函数,开始监听客户端的连接请求。 3. 客户端创建socket,并调用connect函数,向服务器发起连接请求。 4. 服务器调用accept函数,接受客户端的连接请求,并创建一个新的socket用于与该客户端进行通信。 5. 服务器使用select函数来监听多个socket的可读事件。 6. 当有客户端发送数据时,服务器通过recv函数接收数据。 7. 服务器处理接收到的数据,并通过send函数向客户端发送响应数据。 8. 客户端使用select函数来监听服务器的响应数据。 9. 当服务器发送响应数据时,客户端通过recv函数接收数据。 10. 客户端处理接收到的数据,并继续发送请求或关闭连接。 根据引用\[2\]和引用\[3\]中提供的信息,可以看出,在使用lwip的socket编程中,可以通过正确的关闭socket来解决服务器阻塞在recv函数处的问题。同时,对于多个客户端连接一台机器的情况,可以采取关闭socket禁止其他连接进来的做法,以避免寄存器的读写互斥问题。 综上所述,lwip的socket编程中可以使用select函数实现多路复用,同时处理多个客户端连接。通过正确关闭socket和限制连接数量,可以解决服务器阻塞和读写互斥的问题。 #### 引用[.reference_title] - *1* *2* [LWIP学习Socket(应用篇)](https://blog.csdn.net/m0_46577050/article/details/121992022)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [LwIP之socket应用--WebServer和Modbus TCP](https://blog.csdn.net/weixin_42131861/article/details/113009586)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值