写了个服务器端,接受客户端socket连接,部署到本机上访问没有问题。但是部署到阿里云服务器上访问就会有问题,如下:百度和谷歌也都搜了下,没有什么满意的答案,哪位了解的,还望指点下,谢谢!socketjava服务器客户端阿里云
解决方案 »
- 运行时需要标识符,错在哪里?
- 软件设计师考试中的算法设计题~
- 请问下这两种写法,有什么区别?哪一个好一些。
- 想学类库源代码请各位大哥帮助
- 有没有办法用java获得windows的设置的系统参数的值。
- 刚刚看完Java的基础知识,下一步应该怎么做呢?大家谁有java的小项目,能给我一个么?我想锻炼锻炼。
- javamail的问题
- 请教,如何在WebSphere中配置HttpSessionListener?
- 这时 我马上就要毕业了,想找一份程序员的工作,希望大家帮帮我,我的条件是...
- jdk自带jmap查看Tomcat内存里类的情况出错
- 一个关于循环的小问题
- 求高手点拨一个“方法中的异常”处理方法...
控制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框架的。