同一电脑上的android客户端和服务器能连上,但是android客户端换到另一台电脑上就连不上了~
请问下SOCKET需要做些什么设置,才能连上,还是说用SOCKET通讯就只能在统一网络中,我查了下有说端口转发的,但不知道怎么做
用Socket做链接的C#服务器和android客户端,不在同一个电脑上就连不上了
答案:2 悬赏:0 手机版
解决时间 2021-03-14 22:42
- 提问者网友:喧嚣尘世
- 2021-03-14 07:07
最佳答案
- 五星知识达人网友:动情书生
- 2021-03-14 07:22
socket是通过ip地址和端口号链接的
在同一个局域网内比如有一台服务器,两台客户端。
服务器IP:10.0.0.112,开放端口为8888
客户端的socket就应该这样写
socketAddress address=new IntSocketAddress("10.0.0.112",8888);
Socket socket=new Socket(address,int); //这句会让你处理异常,可以处理超时链接,int是时间,单位为毫秒
同一台电脑的话IP地址其实是相同的,所以能够链接。
在同一个局域网内比如有一台服务器,两台客户端。
服务器IP:10.0.0.112,开放端口为8888
客户端的socket就应该这样写
socketAddress address=new IntSocketAddress("10.0.0.112",8888);
Socket socket=new Socket(address,int); //这句会让你处理异常,可以处理超时链接,int是时间,单位为毫秒
同一台电脑的话IP地址其实是相同的,所以能够链接。
全部回答
- 1楼网友:冷風如刀
- 2021-03-14 07:58
c#中的socket.connected 不是指当前是否处于连接状态,这个是挺讨厌的。其实通过发包是肯定可以自动是否处于连接状态。下面是不用发包的检查办法
用socket中的poll方法检查
static bool issocketconnected(socket s)
{
return !((s.poll(1000, selectmode.selectread) && (s.available == 0)) || !s.connected);
}
不过,如果客户端不是程序退出、电脑关机等正常断线方式,而且因为网线被拔等非正常断线,这种方法没有用。还是老老实实,通过服务器定期向客户端来发包来检查的好,这样比较靠谱,而且肯定正确,就是服务器累了点
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯