Java Socket UDP 실시 간 채 팅 사례 구현
2912 단어 JAVA
UDP 프로 토 콜 은 서버 가 정상적으로 작 동 하 든 상 관 없 이 데이터 만 보 내 는데 효율 이 높 고 안전 하지 않 으 며 가방 을 잃 어 버 리 기 쉬 운 것 이 특징 이다.
잔말 말고 코드 를 바로 달 아 라.
클 라 이언 트:
package com.tz.socket.client;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.util.Scanner;
/**
* Title: AskClient
* Description:
* Company:
* @author UU
* @date 2017 6 28 9:29:36
*/
public class AskClient {
private static final int SERVER_PORT = 8888;
private static final int CLIENT_PORT = 6666;
public static void main(String[] args) throws Exception {
// ( )
DatagramSocket socket = new DatagramSocket(SERVER_PORT);
// String msg = " ?";
//
Scanner scanner = new Scanner(System.in);
while (true) {
String msg = scanner.nextLine();
DatagramPacket packet = new DatagramPacket(msg.getBytes(), msg.getBytes().length,
InetAddress.getLocalHost(), CLIENT_PORT);
//
socket.send(packet);
if ("88".equals(msg)) {
break;
}
//
byte[] b = new byte[1024];
DatagramPacket packet2 = new DatagramPacket(b, b.length, InetAddress.getLocalHost(), CLIENT_PORT);
socket.receive(packet2);
System.out.println(" :"+new String(b,0,packet2.getLength()));
}
socket.close();
}
}
서버:
package com.tz.socket.server;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.util.Scanner;
/**
*
* Title: AskServer
* Description:
* Company:
* @author UU
* @email [email protected]
* @phone 18317183091
* @date 2017 6 28 10:24:42
*/
public class AskServer {
private static final int SERVER_PORT = 6666;
private static final int CLIENT_PORT = 8888;
public static void main(String[] args) throws Exception {
// ( )
DatagramSocket server = new DatagramSocket(SERVER_PORT);
Scanner scanner = new Scanner(System.in);
while(true){
// , b
byte[] b = new byte[1024];
DatagramPacket packet = new DatagramPacket(b, b.length,InetAddress.getLocalHost(),CLIENT_PORT);
server.receive(packet);
System.out.println(" :"+new String(b,0,packet.getLength()));
// String callBack = " !";
String callBack = scanner.nextLine();
DatagramPacket packet2 = new DatagramPacket(callBack.getBytes(), callBack.getBytes().length,
InetAddress.getLocalHost(),CLIENT_PORT);
server.send(packet2);
if ("88".equals(callBack)) {
break;
}
}
server.close();
}
}
사실 클 라 이언 트 와 서버 라 는 것 은 없습니다. 모든 종 류 는 클 라 이언 트 이자 서버 입 니 다. 그러나 실제 개발 에서 클 라 이언 트 가 서버 에 보 낸 다음 에 서버 에서 다른 클 라 이언 트 에 메 시 지 를 전달 하 는 과정 이 어야 합 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JAVA 객체 작성 및 제거 방법정적 공장 방법 정적 공장 방법의 장점 를 반환할 수 있습니다. 정적 공장 방법의 단점 류 공유되거나 보호된 구조기를 포함하지 않으면 이불류화할 수 없음 여러 개의 구조기 파라미터를 만났을 때 구축기를 고려해야 한다...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.