Socket-멀티스레드를 통한 간단한 대화방 시뮬레이션
/**
* Created by Liwei on 2016/7/17.
*
* ,
*/
public class MainChatRoom {
public static void main(String[] args) throws SocketException {
// Socket
DatagramSocket dsSend = new DatagramSocket();
// Socket ,
DatagramSocket dsReceive = new DatagramSocket(10086);
SendThread sendThread = new SendThread(dsSend);
ReceiveThread receiveThread = new ReceiveThread(dsReceive);
Thread t1 = new Thread(sendThread);
Thread t2 = new Thread(receiveThread);
t1.start();
t2.start();
}
}
송신자 스레드:
public class SendThread implements Runnable {
private DatagramSocket datagramSocket;
/**
* Socket
* @param datagramSocket
*/
public SendThread(DatagramSocket datagramSocket){
this.datagramSocket = datagramSocket;
}
@Override
public void run() {
try {
//
BufferedReader br =
new BufferedReader(new InputStreamReader(System.in));
String line = null;
while ((line = br.readLine())!=null){
if("886".equals(line)){
break;
}
byte[] bys = line.getBytes();
DatagramPacket dp =
new DatagramPacket(bys,bys.length, InetAddress.getByName("192.168.100.112"),10086);
//
datagramSocket.send(dp);
}
//
datagramSocket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
수신 스레드:
public class ReceiveThread implements Runnable {
private DatagramSocket datagramSocket;
public ReceiveThread(DatagramSocket datagramSocket) {
this.datagramSocket = datagramSocket;
}
@Override
public void run() {
try {
byte[] bys = new byte[1024];
while (true) {
DatagramPacket dp = new DatagramPacket(bys, bys.length);
//
datagramSocket.receive(dp);
//
String ip = dp.getAddress().getHostAddress();
String data = new String(dp.getData(),0,dp.getLength());
System.out.println(" ip "+ ip + " :" + data);
}
} catch (IOException e) {
e.printStackTrace();
}
// , Socket
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.