写了一个跟JAVA连接的SOCKET程序,但是消息发不出去,发出去的消息提示发送成功,但是对放收不到,等断开SOCKET连接后发送的消息对方才收到,也不知道是哪里出了问题
public void send(string str)
{
try
{
byte[] mybyte=new byte[64];
mybyte=System.Text.Encoding.UTF8.GetBytes(str.ToCharArray());
if(socket.Connected)
{
socket.Send(mybyte,mybyte.Length,0);

MessageBox.Show("ok!");

}
else
{
MessageBox.Show("NO!");
}
}
catch
{
  MessageBox.Show("error!");
}
}
这是我发送的代码
一开始缓冲区设的是1024以为太大了改成了64还是不行,但是把接受影响了,现在对放发两条消息我就只能收到一条
public void rec()
{
if(socket.Connected)
{
while(mybool)
{
//sr=new s
byte[] mybyte=new byte[1024];
socket.Receive(mybyte);
str=System.Text.Encoding.UTF8.GetString(mybyte,0,mybyte.Length);
MessageBox.Show(str);
//pCallBack(str);
}
}

}
这是我接受的代码
各位走过的路过的大哥们帮忙看看啊!!我急啊做了N天也没弄出来啊

解决方案 »

  1.   

    是不是没清空缓冲区的原因?怎么清空啊?我是菜鸟,才学。NET没多久
      

  2.   

    提供参考:http://community.csdn.net/Expert/topic/4136/4136853.xml?temp=.5187647
      

  3.   

    看了,谢谢,不过那个发的例子是因为发完消息后就断开了SOCKET连接,我的一连上后就不能断了除非是下线了,还有更好的吗?
      

  4.   

    把rec写在线程里,MessageBox.Show(str);去掉,这个会阻塞的。然后发的时候记得延时。
    就这些建议了
      

  5.   

    http://community.csdn.net/Expert/topic/4136/4136853.xml?temp=.5187647
      

  6.   

    //我是这样写的,不过双方都是C#的
    bySend = System.Text.Encoding.Default.GetBytes(textBox1.Text) ;
    //发送数据
    stSend0.Send(bySend ) ;
     
    bufLen = client.Available ;
    FL = client.Receive(buffer,0,bufLen,SocketFlags.None);//FL为可用数据的长度
      

  7.   

    socket.SetSocketOption(SocketOptionLevel.Tcp, SocketOptionName.Debug, 1); // 缓冲区内数据立即发送