当前位置: 技术问答>linux和unix
请教:一个socket编程的问题!
来源: 互联网 发布时间:2015-12-09
本文导语: linux的socket编程中: 定义的一个 int sock;然后用sendto(sock,···)发送数据,系统会随机选取一个端口进行发送,怎么能自己指定一个端口发送数据呢? | MARK | linux的socket编程中: 定义的...
linux的socket编程中:
定义的一个 int sock;然后用sendto(sock,···)发送数据,系统会随机选取一个端口进行发送,怎么能自己指定一个端口发送数据呢?
定义的一个 int sock;然后用sendto(sock,···)发送数据,系统会随机选取一个端口进行发送,怎么能自己指定一个端口发送数据呢?
|
MARK
|
linux的socket编程中:
定义的一个 int sock;然后用sendto(sock,···)发送数据,系统会随机选取一个端口进行发送,怎么能自己指定一个端口发送数据呢?
================
socket有面向连接和无连接的两种方式,你的直接使用sendto而不用指定端口的是无连接(UDP)的方式,只需要知道对方的IP地址就够了;而固定连接(TCP)的socket则需要指定端口号和IP地址,需要监听这个端口号。
定义的一个 int sock;然后用sendto(sock,···)发送数据,系统会随机选取一个端口进行发送,怎么能自己指定一个端口发送数据呢?
================
socket有面向连接和无连接的两种方式,你的直接使用sendto而不用指定端口的是无连接(UDP)的方式,只需要知道对方的IP地址就够了;而固定连接(TCP)的socket则需要指定端口号和IP地址,需要监听这个端口号。
|
那你就用TCP连接了,UDP好像没有限定什么端口,当然你也可以试一下:
int sock = socket(PF_INET, SOCK_DGRAM, 0);
char host[256] = "192.168.0.23";
char msg[256] = "hello, test";
int port = 3200;
struct sockaddr_in *addrp;
memset(addrp, 0, sizeof(struct sockaddr_in));
strcpy(addrp->h_addr, host);
addrp->sin_port = htons(port);
addrp->sin_family = AF_INET;
sendto(sock, msg, strlen(msg), 0, &addrp, sizeof(addrp);
int sock = socket(PF_INET, SOCK_DGRAM, 0);
char host[256] = "192.168.0.23";
char msg[256] = "hello, test";
int port = 3200;
struct sockaddr_in *addrp;
memset(addrp, 0, sizeof(struct sockaddr_in));
strcpy(addrp->h_addr, host);
addrp->sin_port = htons(port);
addrp->sin_family = AF_INET;
sendto(sock, msg, strlen(msg), 0, &addrp, sizeof(addrp);