使用C进行套接字编程的双向通信

use*_*670 11 c sockets network-programming

我对套接字编程有一点疑问.我能够将数据从客户端发送到服务器,我的服务器处理数据.处理完的数据的o/p,我想发回给我的客户.那么我们可以使用相同的套接字将数据"写"回客户端.我的意思是服务器在接受连接和接收数据之前侦听端口,所以类似地,我是否需要让我的客户端监听其他端口(将其绑定到其他插槽)并使我的服务器连接到该套接字并将数据传回.任何类型的例子或解释或参考将不胜感激.非常感谢提前.

Ker*_* SB 15

首先查看Beej的网络编程指南.

服务器/客户端连接的基本剧本如下:

  • 服务器listen()在固定端口上,具有给定套接字.
  • 客户connect()端到服务器端口; 客户端获取套接字.
  • 服务器accept()是连接,并为连接accept()返回一个套接字.
  • (服务器继续使用原始套接字侦听原始端口.)

对于与客户端的特定连接,服务器到达传入连接write()时获得的新套接字accept().繁忙的服务器将有许多许多套接字,但它只需要bind()一个端口.所有连接都进入该端口,但OS的网络协议栈将数据分开并使其在特定于连接的套接字上可用.


Kar*_*ath 11

您不需要新的套接字.

套接字是双向连接,您可以在两个方向上发送数据,甚至可以从一个方向关闭套接字(不想再写)但仍然从另一个方向发送数据.