10 个解决方案
#1
就是说本来客户端和服务器是连接的,但是服务器把当前这个连接给关了,而你的客户端还尝试使用这个连接,所以报错了。我估计是这样的。你检查下服务器的代码吧,看看哪里关掉了
#2
不好意思 我没说清楚 是服务器端抛出的这个异常 服务器端无法运行了
#3
可能是数据堵塞了,减少每次发送的字节量试试
#4
不应该啊 我就发送了几十byte的数据
#5
这种问题,只能贴代码了。
#6
public void newConn(object o)
{
Socket socket = (Socket)o;
byte[] rMsg = new byte[1000];
while (true)
{
int i = socket.Receive(rMsg);
if (i > 0)
{
//注册
if (rMsg[0] == 0)
{
int result = uBLO.Register(rMsg);
byte[] sMsg = new byte[1];
sMsg[0] = Convert.ToByte(result);
socket.Send(sMsg);
}
//登录
else if (rMsg[0] == 1)
{
int result = uBLO.Login(rMsg);
byte[] sMsg = new byte[1];
sMsg[0] = Convert.ToByte(result);
socket.Send(sMsg);
}
}
}
}
#7
你send的时候重新建个socket。这又收又发的。。
#8
rMsg是byte[]类型
if (rMsg[0] == 0)
else if (rMsg[0] == 1)
猜测你收到的应该是字符"0"或者"1",这样的话两个条件判断为false,2个send都不会执行
然后你服务端代码结束,系统关闭socket。而你的客户端还在傻乎乎receive,,,所以报警socket关闭
如果收到字符进行判断,应该如下
if (rMsg[0] == '0')
else if (rMsg[0] == '1')
#9
出现“远程主机强迫关闭了一个现有的连接”(错误ID为10054),主要是由于一端(不管是客户端或者服务器)关闭Socket后,另外一端还在循环接收,一般就是这个错误,或者“主机软件关闭了一个现有连接之类”(错误ID为10053)。其实你应该把这个当做正常流程来考虑:你客户端是不是终将会关闭吧,那个时候一样报这个错误;所以在catch 上述错误后,进行正常的后续资源释放工作就行。当然,如果你客户端程序在某个异常流程也造成中断,那就仔细排查客户端程序就行。
#10
又发又收没问题的,关键是双方通讯时的游戏规则要定好。客户端那边应该是要等待(可异步)服务端的返回值再进行下一步操作的
#1
就是说本来客户端和服务器是连接的,但是服务器把当前这个连接给关了,而你的客户端还尝试使用这个连接,所以报错了。我估计是这样的。你检查下服务器的代码吧,看看哪里关掉了
#2
不好意思 我没说清楚 是服务器端抛出的这个异常 服务器端无法运行了
#3
可能是数据堵塞了,减少每次发送的字节量试试
#4
不应该啊 我就发送了几十byte的数据
#5
这种问题,只能贴代码了。
#6
public void newConn(object o)
{
Socket socket = (Socket)o;
byte[] rMsg = new byte[1000];
while (true)
{
int i = socket.Receive(rMsg);
if (i > 0)
{
//注册
if (rMsg[0] == 0)
{
int result = uBLO.Register(rMsg);
byte[] sMsg = new byte[1];
sMsg[0] = Convert.ToByte(result);
socket.Send(sMsg);
}
//登录
else if (rMsg[0] == 1)
{
int result = uBLO.Login(rMsg);
byte[] sMsg = new byte[1];
sMsg[0] = Convert.ToByte(result);
socket.Send(sMsg);
}
}
}
}
#7
你send的时候重新建个socket。这又收又发的。。
#8
rMsg是byte[]类型
if (rMsg[0] == 0)
else if (rMsg[0] == 1)
猜测你收到的应该是字符"0"或者"1",这样的话两个条件判断为false,2个send都不会执行
然后你服务端代码结束,系统关闭socket。而你的客户端还在傻乎乎receive,,,所以报警socket关闭
如果收到字符进行判断,应该如下
if (rMsg[0] == '0')
else if (rMsg[0] == '1')
#9
出现“远程主机强迫关闭了一个现有的连接”(错误ID为10054),主要是由于一端(不管是客户端或者服务器)关闭Socket后,另外一端还在循环接收,一般就是这个错误,或者“主机软件关闭了一个现有连接之类”(错误ID为10053)。其实你应该把这个当做正常流程来考虑:你客户端是不是终将会关闭吧,那个时候一样报这个错误;所以在catch 上述错误后,进行正常的后续资源释放工作就行。当然,如果你客户端程序在某个异常流程也造成中断,那就仔细排查客户端程序就行。
#10
又发又收没问题的,关键是双方通讯时的游戏规则要定好。客户端那边应该是要等待(可异步)服务端的返回值再进行下一步操作的