2011-11-16 47 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()關閉連接的套接字。