// 客户端socket在接收数据时,有两种超时:1. 连接服务器超时,即连接超时;2. 连接服务器成功后,接收服务器数据超时,即接收超时
// 设置 socket 读取数据流的超时时间
clientSocket.setSoTimeout(5000);
// 发送数据包,默认为 false,即客户端发送数据采用 Nagle 算法;
// 但是对于实时交互性高的程序,建议其改为 true,即关闭 Nagle 算法,客户端每发送一次数据,无论数据包大小都会将这些数据发送出去
clientSocket.setTcpNoDelay(true);
// 设置客户端 socket 关闭时,close() 方法起作用时延迟 30 秒关闭,如果 30 秒内尽量将未发送的数据包发送出去
clientSocket.setSoLinger(true,30);
// 设置输出流的发送缓冲区大小,默认是4KB,即4096字节
clientSocket.setSendBufferSize(4096);
// 设置输入流的接收缓冲区大小,默认是4KB,即4096字节
clientSocket.setReceiveBufferSize(4096);
// 作用:每隔一段时间检查服务器是否处于活动状态,如果服务器端长时间没响应,自动关闭客户端socket
// 防止服务器端无效时,客户端长时间处于连接状态
clientSocket.setKeepAlive(true);
// 客户端向服务器端发送数据,获取客户端向服务器端输出流
OutputStream osSend = clientSocket.getOutputStream();
OutputStreamWriter osWrite =newOutputStreamWriter(osSend);
BufferedWriter bufWrite =newBufferedWriter(osWrite);
// 代表可以立即向服务器端发送单字节数据
clientSocket.setOOBInline(true);
// 数据不经过输出缓冲区,立即发送
clientSocket.sendUrgentData(0x44);//"D"
参考博文:
http://www.360doc.com/content/13/0605/10/1554663_290593550.shtml