2011-11-16 48 views
0

如何打开发送数据或接收数据的套接字? 如果您想使用套接字发送数据,该套接字将不会收到任何数据。如何打开只在linux中发送数据的套接字

是否有任何套接字选项可用于此?

+1

有很多关于如何在互联网上以各种语言创建和使用套接字的教程。使用Google搜索。至于使套接字单向(使用C或C++),请参阅Martijns的答案。 –

回答

2

如果发送方和接收方进程都位于同一台计算机上,则可以使用pipe而不是套接字,请参阅pipe(2)手册页了解其工作方式。

如果这是通过网络进行通信,那么您可以使用套接字而不发送数据。如果你想确认,你可以使用shutdown(fd, SHUT_RD)来关闭你的socket的写入部分。

+1

尽管在这种情况下使用'SHUT_RD',因为OP只想发送而不接收。 –

+0

Ahem。哎呀。固定。 (time for coffee :) – Martijn

+0

谢谢你的回答。但是我打开socket时使用SOCK_DGRAM数据包。当我使用shutdown()调用时,它会产生一个错误“传输端点没有连接”。并且我的通信是通过network.please解释解决方案。感谢提前。 – saipradeep

1

使用UNIX域套接字,并没有将其绑定:

fd = socket(PF_LOCAL, SOCK_DGRAM, 0); 

然后,你可以通过使用套接字发送,但没有人能够将数据发送到插座。 即使接收器也无法响应。

0

如果这是通过网络进行通信,并且您希望确保它是只写套接字,那么可以使用shutdown(fd,SHUT_RD)关闭套接字的写入部分。 如果这是一个SOCK_DGRAM(一个UDP套接字),请使用connect()连接到远程节点,然后调用shutdown()。 shutdown()关闭连接的套接字。