해결책:
두 개의 서로 다른 스레드에 보내고 받기를 보냅니다
1. SendThread가 메시지 스레드를 보냅니다
2. RecieveThread가 메시지 스레드를 받습니다
3. . 클라이언트 연결이 설정되면 보내고 받기 위한 두 개의 스레드가 시작됩니다.
package socket; import java.io.DataOutputStream; import java.io.IOException; import java.io.OutputStream; import java.net.Socket; import java.util.Scanner; public class SendThread extends Thread { private Socket s; public SendThread(Socket s) { this.s = s; } @Override public void run() { try { OutputStream os = s.getOutputStream(); DataOutputStream dos = new DataOutputStream(os); while(true){ Scanner sc = new Scanner(System.in); String str = sc.next(); dos.writeUTF(str); } } catch (IOException e) { e.printStackTrace(); } } }
package socket; import java.io.DataInputStream; import java.io.IOException; import java.io.InputStream; import java.net.Socket; public class RecieveThread extends Thread { private Socket s; public RecieveThread(Socket s) { this.s = s; } @Override public void run() { InputStream is = null; try { is = s.getInputStream(); DataInputStream dis = new DataInputStream(is); while(true){ String msg = dis.readUTF(); System.out.println(msg); } } catch (IOException e) { e.printStackTrace(); } } }
위 내용은 Java 네트워크 프로그래밍: 다중 스레드 채팅 구현의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!