2016-12-05 34 views
1

我想做一個簡單的TCP客戶端服務器程序,接受來自多個客戶端的請求,並啓動兩個客戶端之間的雙向聊天,這樣一個客戶端可以發送多條消息其他無需等待其他客戶的迴應。
我已經寫了一些代碼,無法知道下一步該怎麼做在java中的兩個客戶端之間的TCP服務器和聊天

//Server Side code 
public class ServerThread extends Thread 
{ 
    private StringProperty clientname; 
    private StringProperty clientIP; 
    private IntegerProperty clientport; 
    private Socket clientsock; 
    File file; 
public ServerThread(Socket cs,String name) 
{ 
    clientname=new SimpleStringProperty(name); 
    setClientsock(cs); 
    clientIP=new SimpleStringProperty(cs.getInetAddress().getHostAddress().toString()); 
    clientport=new SimpleIntegerProperty(cs.getPort()); 
    this.start(); 
} 

public void run() 
{ 
    System.out.println("Now i am started:"); 
    try 
    { 
     System.out.println("clientname.getValue() "+clientname.getValue()); 
     BufferedReader infromclient = new BufferedReader(new InputStreamReader(clientsock.getInputStream()));   
     file=new File(clientname.getValue()+".txt"); 
     if(!file.exists()) 
     file.createNewFile(); 
     while(true) 
     { 
      FileWriter writer = new FileWriter(file, true); 
      writer.write((char)infromclient.read()); 
      writer.close(); 

     } 

    } 
    catch (IOException e) 
    { 
     e.printStackTrace(); 
    } 

} 
public StringProperty getClientname() 
{ 
    return clientname; 
} 
public void setClientname(String name) 
{ 
    clientname=new SimpleStringProperty(name); 
} 
public StringProperty getClientIP() 
{ 
    return clientIP; 
} 
public void setClientIP(String string) 
{ 
    this.clientIP.set(string); 
} 
public IntegerProperty getClientport() 
{ 
    return clientport; 
} 
public void setClientport(int clientport) 
{ 
    this.clientport.set(clientport); 
} 
public Socket getClientsock() 
{ 
    return clientsock; 
} 
public void setClientsock(Socket clientsock) 
{ 
    this.clientsock = clientsock; 
} 

} 

客戶端代碼

public class Cleint { 
public static void main(String[] args) { 
    // TODO Auto-generated method stub 

    try { 
     Socket clientsock=new Socket("127.0.0.1",5055); 
     System.out.println("Conected with server:"); 
     BufferedReader in=new BufferedReader(new InputStreamReader(System.in)); 
     BufferedReader infromServer=new BufferedReader(new InputStreamReader(clientsock.getInputStream())); 
     PrintWriter out=new PrintWriter(clientsock.getOutputStream(),true); 

     String fromServer = infromServer.readLine(); 
     System.out.println("Server says: " + fromServer); 
     String string=in.readLine(); 
     out.println(string); 
     while(true) 
     { System.out.print("Enter Msg:"); 
      string=in.readLine(); 
      // javax.swing.JOptionPane.showInputDialog(null, "Client Enter value"); 
      out.println(string); 
     // System.out.println("In client loop"); 
      fromServer = infromServer.readLine(); 
      System.out.println("Server says: " + fromServer); 
     } 
    } catch (UnknownHostException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
} 

} 
+0

而你的問題是? – UnholySheep

+0

Thanks @ UnholySheep我通過@Raja Hammad Farooq找到了解決方案 –

回答