h**i 发帖数: 712 | 1 指定一个空闲的端口,比如50000,bind后发现系统给分配了2xxxx 的端口,用sudo执
行也不行,这是为什么? | X****r 发帖数: 3557 | 2 你把绑定的端口和连接的端口搞混了吧?2xxxx是不是连接的端口?
【在 h**i 的大作中提到】 : 指定一个空闲的端口,比如50000,bind后发现系统给分配了2xxxx 的端口,用sudo执 : 行也不行,这是为什么?
| h**i 发帖数: 712 | 3 绑定后应该可以用netstat看到监听的端口,根本不是指定的端口。
client都连不上,没有连接的端口。
【在 X****r 的大作中提到】 : 你把绑定的端口和连接的端口搞混了吧?2xxxx是不是连接的端口?
| t****t 发帖数: 6806 | 4 那你是怎么绑定的呢? 拿code出来看看吧.
【在 h**i 的大作中提到】 : 绑定后应该可以用netstat看到监听的端口,根本不是指定的端口。 : client都连不上,没有连接的端口。
| X****r 发帖数: 3557 | 5 你用了netstat -l了吗?缺省不显示监听的端口。
还有一个可能是你指定端口的时候没有转换高低字节,
50000->0x50C3, 0xC350->20675
man htons
【在 h**i 的大作中提到】 : 绑定后应该可以用netstat看到监听的端口,根本不是指定的端口。 : client都连不上,没有连接的端口。
| t****t 发帖数: 6806 | 6 哈哈, 肯定是没转换...
【在 X****r 的大作中提到】 : 你用了netstat -l了吗?缺省不显示监听的端口。 : 还有一个可能是你指定端口的时候没有转换高低字节, : 50000->0x50C3, 0xC350->20675 : man htons
| h**i 发帖数: 712 | 7 用 netstat -anp查看的
if((listenfd=socket(AF_INET,SOCK_STREAM, 0)) == -1)
{
fprintf(stderr, "Socket Error: %s\a\n", strerror(errno));
exit(1);
}
on = 1;
ret = setsockopt(listenfd, SOL_SOCKET, SO_REUSEADDR, &on, sizeof(on));
bzero((void*)&server_addr, sizeof(server_addr));
server_addr.sin_family=AF_INET;
server_addr.sin_port=htonl(9000);
server_addr.sin_addr.s_addr=htonl(INADDR_ANY);
if(bind(listenfd, (struct sockaddr *)(&server_addr), sizeof(struct
sockaddr)) == -1)
{
fprintf(stdout, "%s:%d Bind error: %s\n\a", __FILE__, __LINE__,
strerror(errno));
exit(1);
}
if(listen(listenfd, 20)== -1)
{
fprintf(stdout, "Listen error: %s\n\a", strerror(errno));
exit(1);
}
【在 X****r 的大作中提到】 : 你用了netstat -l了吗?缺省不显示监听的端口。 : 还有一个可能是你指定端口的时候没有转换高低字节, : 50000->0x50C3, 0xC350->20675 : man htons
| j*a 发帖数: 14423 | 8 server_addr.sin_port=htons(9000);
【在 h**i 的大作中提到】 : 用 netstat -anp查看的 : if((listenfd=socket(AF_INET,SOCK_STREAM, 0)) == -1) : { : fprintf(stderr, "Socket Error: %s\a\n", strerror(errno)); : : exit(1); : } : on = 1; : ret = setsockopt(listenfd, SOL_SOCKET, SO_REUSEADDR, &on, sizeof(on)); :
| h**i 发帖数: 712 | 9 发现了,数据类型错了,我以为端口可以用到32位。
谢谢各位。
【在 j*a 的大作中提到】 : server_addr.sin_port=htons(9000); : :
| M*********t 发帖数: 257 | 10 confused ?
struct sockaddr_in {
short sin_family; // e.g. AF_INET, AF_INET6
unsigned short sin_port; // e.g. htons(3490)
struct in_addr sin_addr; // see struct in_addr, below
char sin_zero[8]; // zero this if you want to
};
unsigned short is 16 bit so port number should be
0~65535
9000 is a good number to use呀 ?
【在 h**i 的大作中提到】 : 发现了,数据类型错了,我以为端口可以用到32位。 : 谢谢各位。
|
|