锁定老帖子 主题:winsock2的问题
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2007-03-26
我用java socket做客户端,用vc做服务器端,java的客户端与java的服务器端通信正常代码如下: while(true){ out.writeInt(123); [u]Thread.sleep(10);[/u] } 下划线的那句code问题就在这了,如果没有这句话 winsock2的recv正常收数据,如果加下这句话,问题来了,recv收到了0连接断了,我找了很多资料不解呀,请各位解答一下吧 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2007-03-27
你的java socket发包是同步模式还是异步模式?
服务器端收到0,表示客户端断开了。 |
|
返回顶楼 | |
发表时间:2007-03-27
jack 写道 你的java socket发包是同步模式还是异步模式?
服务器端收到0,表示客户端断开了。 同步 |
|
返回顶楼 | |
发表时间:2007-03-27
奇怪,我用的apachemina座服务端, 却必须要那行sleep,否则发送多次的数据,在服务端指挥解析得到一次,郁闷:( |
|
返回顶楼 | |
发表时间:2007-03-28
不死太熟悉java怎么处理socket,不过一般来说,TCP socket只要连接上,都不容易断开。如果服务端不收不发,客户端不收不发,根本不会断开。当然如果服务端写的不太好的话,比如 不管客户端有没有发送数据,服务端不停的recv,在某种情况下服务端会认为客户端断开了,具体情况是怎么样的有点忘记了,建议你查下这个方面的资料。我比较怀疑现在是这种情况。
|
|
返回顶楼 | |
发表时间:2007-03-29
有点进展了,winsock2一个字节一个字节的读没问题
如果读到一个指定大小的char*还是会有这样的问题 |
|
返回顶楼 | |
发表时间:2007-04-03
winsock2做客户端问题就不存在了,看来winsock2与java socket通信还真有点区别,于是认为winsock2同异步的,可是winsock2默认情况下是同步的,难道底层有什么不同?
|
|
返回顶楼 | |
发表时间:2007-04-09
底层都一样,都是基于unix下的soket发展而来。
似乎也没有“winsock2默认情况下是同步的”这个说法吧? |
|
返回顶楼 | |
发表时间:2007-04-10
spinach 写道 底层都一样,都是基于unix下的soket发展而来。
似乎也没有“winsock2默认情况下是同步的”这个说法吧? winsock也是基于unix下的socket? 用ioctlsocket这个函数可以也可以设置同步,但是与java通信我发现两方都要用byte接收和发送 |
|
返回顶楼 | |
发表时间:2007-04-10
winsock不是基于 bd socket,但是window也提供和unix完全一样的socket函数,判断方法蛮简单的,如果函数名字都是小写的就是标准的socket函数,每个平台差不多都有的那种。 winsock的函数名都是大小写混写的.
数据通讯当然要用byte来处理. |
|
返回顶楼 | |