转自:http://blog.csdn.net/e3002/archive/2009/01/17/3806984.aspx
socket编程的注意事项:
1.连接超时
不推荐的写法
m_socket = new Socket(fm_ipaddr,fm_port);
m_socket.setSoTimeout(180000);//读取数据超时设置3m
以上这种写法,在对方端口当掉时,客户端会一直等待连接,并不会抛出异常。所以超时根本没用
推荐写法:
m_socket = new Socket();
m_socket.setSoTimeout(180000);//读取数据超时设置3m
m_socket.connect(new InetSocketAddress(fm_ipaddr,fm_port), 2000);//建立连接超时设置
2.在进行流操作时最好加上以下判断
m_socket.sendUrgentData(0xFF);//判断一下网络是否断开
3.是否关闭输出流和输入流
对于同一个socket,如果关闭了输出流,则与该输出流关联的socket也会被关闭。所以一般不用关闭流,直接关闭socket就可以了。
以上经过实践证明可行。