写了个服务器端,接受客户端socket连接,部署到本机上访问没有问题。但是部署到阿里云服务器上访问就会有问题,如下:百度和谷歌也都搜了下,没有什么满意的答案,哪位了解的,还望指点下,谢谢!socketjava服务器客户端阿里云
解决方案 »
- java中用ObjectOutputStream 写入多个相同类型对象
- java怎样用按钮执行操作
- connection refused connect 问题
- Can't get definitions factory from context
- 在读别人一段代码的时候,遇到了一点不懂的问题。请大家帮忙:)
- 一个很奇怪的Java问题
- 程序编译的时候报错,请看详细内容
- list.iterator()方法怎么用?有什么用?(在线等待)
- j2sdk1.4.0-beta3中有无sun.jdbc.odbc.JdbcOdbcDriver,有的话,在哪?
- 请问如何在jtable的column中的每个cell中设成不同的类!请大虾们帮忙啦,我只有43分全部奉送啦
- 一个关于循环的小问题
- 求高手点拨一个“方法中的异常”处理方法...
控制socket的因素参数还是蛮多的,有一部分是依赖操作系统的参数。可以去控制一下服务端的参数的调配,以下是可能需要要重新设置的参数 // 接受与发送的数据大小
channel.socket().setReceiveBufferSize(getTxBufSize());
channel.socket().setSendBufferSize(getTxBufSize());
// 设置tcp包是否有延迟
channel.socket().setTcpNoDelay(getTcpNoDelay());
// 设置连接是否存活
channel.socket().setKeepAlive(getSoKeepAlive());
// TCP的紧急指针,一般都不建议使用,而且不同的TCP/IP实现,也不同,一般说如果你有紧急数据宁愿再建立一个新的TCP/IP连接发送数据,让对方紧急处理
channel.socket().setOOBInline(getOoBInline());
// 绑定套接字前启用 SO_REUSEADDR 允许在上一个连接处于超时状态时绑定套接字。
channel.socket().setReuseAddress(getSoReuseAddress());
// close关闭的的延迟时间,为了尽可能将package发送出去。
// 在默认情况下,当调用close方法后,将立即返回;如果这时仍然有未被送出的数据包,那么这些数据包将被丢弃。如果将linger参数设为一个正整数n时(n的值最大是65,535),在调用close方法后,将最多被阻塞n秒。在这n秒内,系统将尽量将未送出的数据包发送出去;如果超过了n秒,如果还有未发送的数据包,这些数据包将全部被丢弃;
channel.socket().setSoLinger(getSoLingerOn(),getSoLingerTime());
// socket的超时时间
channel.socket().setSoTimeout(getTimeout());尤其是Linger参数,可能由于不同的操作系统导致不同的结果。
客户端是C++写的,服务端是用Mina框架的。