当前位置: 技术问答>linux和unix
我写了SOCKET编程(需要开放哪个端口,如何设置)
来源: 互联网 发布时间:2015-03-29
本文导语: 如题我在WIN98下用VC++写的 用的是AF_INET的协议端口是2350 在LINUX同样是这个 但是连不通(我把防火墙设置为无) 请问是程序的问题还是网络设置的问题(我用PING 可以有反应) | 你说得不太清...
如题我在WIN98下用VC++写的
用的是AF_INET的协议端口是2350
在LINUX同样是这个
但是连不通(我把防火墙设置为无)
请问是程序的问题还是网络设置的问题(我用PING 可以有反应)
用的是AF_INET的协议端口是2350
在LINUX同样是这个
但是连不通(我把防火墙设置为无)
请问是程序的问题还是网络设置的问题(我用PING 可以有反应)
|
你说得不太清楚,不知道你的问题在哪!
如果是Server端的话,你在程序运行起来后,用netstat -an|more查看一下有没有一个端口 2350正在 LISTENING,如果Client要连接Server端的2350,同样可以从两台机器上用同样的命令netstat -an来查看究竟有没有连接成功,如果成功连接可以看到ESTABLISH,或者是TIME-WAIT(连接成功了,但已断开了)
如果是Server端的话,你在程序运行起来后,用netstat -an|more查看一下有没有一个端口 2350正在 LISTENING,如果Client要连接Server端的2350,同样可以从两台机器上用同样的命令netstat -an来查看究竟有没有连接成功,如果成功连接可以看到ESTABLISH,或者是TIME-WAIT(连接成功了,但已断开了)
|
那我就有点不明白了,如果连接不成功的话,你应该在connect的时候已经是返回出错了,怎么还会等到recv()这个函数呢?
recv出错有很多种,你是用阻塞方式,还是非阻塞方式?你recv的返回值是多少?GetLastError返回是多少?
recv出错有很多种,你是用阻塞方式,还是非阻塞方式?你recv的返回值是多少?GetLastError返回是多少?
|
能不能具体一点啊,端口号的设置不会有什么大的影响的。
|
基本上和windows下差不多的,你会windows下的,在linux下写一个简单的例子应该不成问题,你先看看错误号,在查一查相应的含义,应该能搞定的
|
vc 你是用API写的吧?你要注意初始化,即SOCKET环境.
|
sockaddr_error是多少?
我记得ret > 0 就应该是对的。如果出错在Windows 你要GetLastError()来返回错误代码,如果是UNIX,你要查看errno的值是多少,来判断错误类型!
我记得ret > 0 就应该是对的。如果出错在Windows 你要GetLastError()来返回错误代码,如果是UNIX,你要查看errno的值是多少,来判断错误类型!