I know that it is not easy to bind a port number to TCP socket that you would use to send data (because systems usually bi
Bind it before connecting.
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));
Actually it is quite easy. Simply use the bind function as you would for a server.
You can simply call bind()
before connect()
in a client in the same way that you would call bind()
before listen()
in a server. There is nothing more complicated to it than that.