This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import java.io.BufferedReader; | |
import java.io.IOException; | |
import java.io.InputStreamReader; | |
import java.io.PrintWriter; | |
import java.net.InetSocketAddress; | |
import java.net.Socket; | |
public class ChatClient { | |
public static void main(String[] args) throws IOException { | |
Socket socket = new Socket(); | |
socket.connect(new InetSocketAddress("localhost", 5000)); | |
new Thread(new InputThread(socket)).start(); | |
new Thread(new OutputThread(socket)).start(); | |
} | |
} | |
class InputThread extends Thread { | |
Socket socket; | |
public InputThread(Socket socket) { | |
this.socket = socket; | |
} | |
public void run() { | |
try { | |
PrintWriter printWriter = new PrintWriter(socket.getOutputStream()); | |
while (socket.isConnected()) { | |
InputStreamReader cin = new InputStreamReader(System.in); | |
BufferedReader br = new BufferedReader(cin); | |
String buf = br.readLine(); | |
printWriter.println(buf); | |
printWriter.flush(); | |
} | |
} catch (IOException e) { | |
e.printStackTrace(); | |
} | |
} | |
} | |
class OutputThread extends Thread { | |
Socket socket; | |
public OutputThread(Socket socket) { | |
this.socket = socket; | |
} | |
public void run() { | |
try { | |
while (socket.isConnected()) { | |
BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream())); | |
String message; | |
while ((message = br.readLine()) != null) { | |
System.out.println(message); | |
} | |
} | |
} catch (IOException e) { | |
e.printStackTrace(); | |
} | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import java.io.BufferedReader; | |
import java.io.IOException; | |
import java.io.InputStreamReader; | |
import java.io.PrintWriter; | |
import java.net.ServerSocket; | |
import java.net.Socket; | |
import java.util.HashSet; | |
import java.util.Set; | |
public class ChatServer { | |
private static Set<Socket> socketSet = new HashSet<Socket>(); | |
private static ServerSocket serverSocket; | |
public static Set<Socket> getSocketSet() { | |
return socketSet; | |
} | |
public static void main(String[] args) throws IOException { | |
serverSocket = new ServerSocket(5000); | |
while (!serverSocket.isClosed()) { | |
Socket socket = serverSocket.accept(); | |
socketSet.add(socket); | |
new Thread(new ServerThread(socket)).start(); | |
} | |
} | |
} | |
class ServerThread extends Thread { | |
Socket socket; | |
public ServerThread(Socket socket) { | |
this.socket = socket; | |
} | |
public void run() { | |
while (socket.isConnected()) { | |
try { | |
BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream())); | |
String message = br.readLine(); | |
System.out.println(Thread.currentThread().getId() + " " + message); | |
synchronized (this) { | |
for (Socket socket : ChatServer.getSocketSet()) { | |
if (!this.socket.equals(socket)) { | |
PrintWriter printWriter = new PrintWriter(socket.getOutputStream()); | |
printWriter.println(message); | |
printWriter.flush(); | |
} | |
} | |
} | |
} catch (IOException e) { | |
e.printStackTrace(); | |
} | |
} | |
} | |
} |
0 件のコメント:
コメントを投稿