【问题标题】:binding a port number to a TCP socket (outgoin) to send packets将端口号绑定到 TCP 套接字(outgoin)以发送数据包
【发布时间】:2011-06-24 12:58:04
【问题描述】:

我知道将端口号绑定到 TCP 套接字发送数据并不容易(因为系统通常将随机端口绑定到套接字)。

但我在一篇文章中读到,通过使用一些低级网络方法,您可以将端口号绑定到 TCP 套接字,然后使用它来发送数据?

有没有人知道如何做到这一点?

我正在使用c编程语言

【问题讨论】:

标签: c++ c networking tcp network-programming


【解决方案1】:

连接前绑定。

s = socket(AF_INET, SOCK_STREAM, 0);
/* ... */

memset(&client_addr, 0, sizeof(client_addr));
client_addr.sin_family = AF_INET;
client_addr.sin_port = htons(22222);

if (bind(s, (struct sockaddr *) &client_addr, sizeof(client_addr)) < 0) {
    perror("bind");
    exit(1);
}

connect(s, (struct sockaddr *) &server_addr, sizeof(server_addr));

【讨论】:

  • 那么,我是否也可以通过相同的端口(在本例中为 22222)进行监听?我想不是。但请确认。
【解决方案2】:

其实很简单。只需像使用服务器一样使用 bind 函数。

【讨论】:

  • 那么,我也可以通过同一个端口监听吗?我想不是。但请确认。
【解决方案3】:

您可以在客户端中简单地在 connect() 之前调用 bind(),就像在服务器中在 listen() 之前调用 bind() 一样。没有比这更复杂的了。

【讨论】:

  • 那么,我还能通过同一个端口(在本例中为 22222)进行监听吗?我想不是。但请确认。
猜你喜欢
  • 1970-01-01
  • 2012-11-29
  • 2013-09-16
  • 1970-01-01
  • 2021-08-25
  • 2013-07-04
  • 2012-05-21
  • 1970-01-01
  • 2015-07-04
相关资源
最近更新 更多