我们先假设服务器收到一个“A”后会向客户端发送一个“b“现在想实现一个这样的客户端的函数
 
/**
 *向服务端发送一个数据
 *@param data 要向服务器发送的数据
 *@return 服务器返回的数据 */
String sendData(String data)

解决方案 »

  1.   

    我想的是,客户端发送数据之后,函数就执行结束了,这让我很疚结,服务器发回来的数据会触发另外的事件,这想就没办法在原函数上return回来了。应该怎么办呢?
      

  2.   

    while(true){}
    让socket线程循环等待
      

  3.   

    好像有个异步通信不阻塞的api,可以查下
      

  4.   

    如果你是数据报[udp]协议 那么直接两边互相调用send() 和recive()函数即可 如果是tcp那么 把数据写到客户端和服务器端的流里面发出去就可以了
      

  5.   

    这是 accept() 这是连接时用的虚拟通道
      

  6.   

    客户端
     TcpClient.java
    import java.io.*;
    import java.net.*;
    class TcpClient{
    public static void main(String []args)throws Exception
    {
        String sentence;
       String ts;
      BufferedReader inFormUser=new BufferedReader(new InputStreamReader(System.in));
      Socket client=new Socket("计算机名",端口号);
       DataOutputStream outToServer=new DataOutputStream(client.getOutputStream());
       BufferedReader inFromServer=new BufferedReader(new InputStreamReader(client.getInputStream()));
     sentence=inFromUser.readLine();
      outToServer.writeBytes(sentence+'\n');
      ts=inFromServer.readLine();
     System.out.println("来自服务端的消息:"+ts);
      client.close();
    }
    }服务端 TcpServer.java
    import java.io.*;
    import java.net.*;
    public  class TcpServer{
    public static void main(String []args)throws Exception{    String cs;
        String tocs;
        ServerSocket ss=new ServerSocket(端口号);
        while(true){
          Socket conn=ss.accept();
        BufferedReader inFromClient=new BufferedReader(new InputStreamReader(conn.getInputStream());
         DataOutputStream outToClient=new DataOutputStream(inFromClient.getOutputStream());
          cs=inFromClient.readLine();
         tocs=cs.toLowwer()+'\n'; //转为小写,方法名 不记得了 ,会自动出来这个方法,应该是这个
        outToClient.writeBytes(tocs);
        ss.close();
    }
    以上通过面向连接的TCP通讯,没有测试代码。大致过程就是这样的
    LZ说 用函数 ,你所说的是不是 无连接的UDP通讯?