论坛首页 编程语言技术论坛

winsock2的问题

浏览 7699 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-03-26  
C++
一直用java socket通信,有网上看到说,本地socket性能要强于java socket于是用winsock2做了一个服务器端,可是遇到了问题,看了很多资料没有找到。我先说一下问题

我用java socket做客户端,用vc做服务器端,java的客户端与java的服务器端通信正常代码如下:

 while(true){
  out.writeInt(123);
  [u]Thread.sleep(10);[/u]
 }


下划线的那句code问题就在这了,如果没有这句话

winsock2的recv正常收数据,如果加下这句话,问题来了,recv收到了0连接断了,我找了很多资料不解呀,请各位解答一下吧
   发表时间:2007-03-27  
你的java socket发包是同步模式还是异步模式?
服务器端收到0,表示客户端断开了。
0 请登录后投票
   发表时间:2007-03-27  
jack 写道
你的java socket发包是同步模式还是异步模式?
服务器端收到0,表示客户端断开了。


同步
0 请登录后投票
   发表时间:2007-03-27  


奇怪,我用的apachemina座服务端,

却必须要那行sleep,否则发送多次的数据,在服务端指挥解析得到一次,郁闷:(

0 请登录后投票
   发表时间:2007-03-28  
不死太熟悉java怎么处理socket,不过一般来说,TCP socket只要连接上,都不容易断开。如果服务端不收不发,客户端不收不发,根本不会断开。当然如果服务端写的不太好的话,比如 不管客户端有没有发送数据,服务端不停的recv,在某种情况下服务端会认为客户端断开了,具体情况是怎么样的有点忘记了,建议你查下这个方面的资料。我比较怀疑现在是这种情况。
0 请登录后投票
   发表时间:2007-03-29  
有点进展了,winsock2一个字节一个字节的读没问题

如果读到一个指定大小的char*还是会有这样的问题
0 请登录后投票
   发表时间:2007-04-03  
winsock2做客户端问题就不存在了,看来winsock2与java socket通信还真有点区别,于是认为winsock2同异步的,可是winsock2默认情况下是同步的,难道底层有什么不同?
0 请登录后投票
   发表时间:2007-04-09  
底层都一样,都是基于unix下的soket发展而来。

似乎也没有“winsock2默认情况下是同步的”这个说法吧?
0 请登录后投票
   发表时间:2007-04-10  
spinach 写道
底层都一样,都是基于unix下的soket发展而来。

似乎也没有“winsock2默认情况下是同步的”这个说法吧?



winsock也是基于unix下的socket?

用ioctlsocket这个函数可以也可以设置同步,但是与java通信我发现两方都要用byte接收和发送
0 请登录后投票
   发表时间:2007-04-10  
winsock不是基于 bd socket,但是window也提供和unix完全一样的socket函数,判断方法蛮简单的,如果函数名字都是小写的就是标准的socket函数,每个平台差不多都有的那种。 winsock的函数名都是大小写混写的.

数据通讯当然要用byte来处理.
0 请登录后投票
论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics