新浪博客

端口绑定错误:Cannot assign requested address

2012-05-30 09:12阅读:
Cannot assign requested address
这个错误很可从以下原因中找找:
1)端口正被其他程序使用,也就是说该端口被占用
2)查看绑定的ip是不是本地ip,注意nat中要绑定内网ip。

本次程序中出现如下错误:用socket A向B 发送数据,A能收到,且能给B返回,但是B收不到返回的包。原因是B发送数据时源端口是随机产生的,可以用该端口向外发送数据,但是因为防火墙的原因,该端口不可用来接收外网发来的数据。
解决方法: UDP包 可以用bind 绑定本地ip和端口,connect 绑定目的ip和端口。

非阻塞的socket :

 Select函数在Socket编程中还是比较重要的,可是对于初学Socket的人来说都不太爱用Select写程序,他们只是习惯写诸如connect、accept、recv或recvfrom这样的阻塞程序(所谓阻塞方式block,顾名思义,就是进程或是线程执行到这些函数时必须等待某个事件的发生,如果事件没有发生,进程或线程就被阻塞,函数不能立即返回)。可是使用Select就可以完成非阻塞(所谓非阻塞方式non-block,就是进程或线程执行此函数时不必非要等待事件的发生,一旦执行肯定返回,以返回值的不同来反映函数的执行情况,如果事件发生则与阻塞方式相同,若事件没有发生则返回一个代码来告知事件未发生,而进程或线程继续执行,所以效率较高)方式工作的程序,它能够监视我们需要监视的文件描述符的变化情况——读写或是异常。

我的更多文章

下载客户端阅读体验更佳

APP专享