我用java socket写程序作为客户端,vb socket做服务器端,奇怪的是:服务器端能接受到我发送的数据,但是当服务器运行时,客户端接受不到服务器端响应的数据,然而当将服务器端停止运行时,客户端却可以接受到数据!
请您指教!

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【ysgzyq1982】截止到2008-06-26 21:46:35的历史汇总数据(不包括此帖):
    发帖数:0                  发帖分:0                  
    结贴数:0                  结贴分:0                  
    未结数:0                  未结分:0                  
    结贴率:-------------------结分率:-------------------
    如何结贴请参考这里:http://topic.csdn.net/u/20080501/09/ef7ba1b3-6466-49f6-9d92-36fe6d471dd1.html
      

  2.   

    java socket接收数据的代码可能有问题
    可能由于vb socket发送数据不及时刷新缓冲区,服务器端多发几次客户端也收不到吗
      

  3.   

    是的,多发了几次也收不到!
    Java socket 客户端验证通过,应该没问题,后来我 用了线程也不行!
    我现在将代码附上,请您帮我看看问题出在那里!
    万分感谢!
    客户端和服务器位于本地计算机上,计算机名:ysg   监听端口:8083
    客户端:
    import java.net.*;
    import java.io.*;
    import java.lang.*;class receiveThread extends Thread{
        public void run() {
            try {
                BufferedReader in=new BufferedReader(new InputStreamReader(serverAgent.aSocket.getInputStream()));
                String st = in.readLine();
                System.out.println(st);
            } catch (IOException e) {e.printStackTrace();}
        }
    }class serverAgent{
      static  Socket aSocket=null;
      public serverAgent(String name,int port){
          try{
             aSocket=new Socket(name,port);
          }catch(IOException e){}
      }
    }
    class sendThread extends Thread{
        public void run() {
            try {
                PrintWriter out = new PrintWriter(serverAgent.aSocket.getOutputStream());
                BufferedReader wt = new BufferedReader(new InputStreamReader(System.
                        in));
                  String str=wt.readLine();
                while(true)
                {   out.println(str);
                    out.flush();
              }
            }catch(IOException e){e.printStackTrace();}
        }
    }
    public class ClientThread{
        static sendThread sendData;
        static receiveThread getData;
        public static void main(String[] args){
            serverAgent Agent= new serverAgent("ysg", 8083);
            sendData=new sendThread();
            getData=new receiveThread();
            sendData.start();
            getData.start();   
        }
    }
    服务端:Option Explicit
    Dim iSocket As Integer
    Dim s As StringPrivate Sub Form_Load()
    Winsock1.LocalPort = 8083
    Winsock1.Listen
    End Sub
    Private Sub Winsock1_Close()
    Winsock1.Close
    End SubPrivate Sub Winsock1_ConnectionRequest(ByVal requestID As Long)
    If Winsock1.State <> sckClosed Then
    Winsock1.Close
    Winsock1.Accept requestID
    End If
    End SubPrivate Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
    Dim t As String
    t="ok"
    Winsock1.GetData s, vbString
    Text1.Text = s
    Winsock1.GetData t,vbstring
    End Sub
      

  4.   

    java读取流的时候用的BufferedReader.readLine, 如果VB服务器发出的流数据中没有回车的话, java当然就没有输出了~~~~~
      

  5.   

    请问如何加上回车,表示数据结束呢?
    是不是string & vbCrLf   
      或string  &  chr(13)  &  chr(10)?