1. 소켓 소켓
네트워크 드라이버는 애플리케이션 프로그래밍을 위한 인터페이스와 메커니즘을 제공하는데, 이는 애플리케이션이 여기에 상품을 넣으면 상품 배송이 완료됩니다. 애플리케이션에서 생성되고 바인딩 메커니즘을 통해 드라이버와의 관계를 설정하고 해당 IP 및 포트를 스스로 알려줍니다.
Socket은 java.net 패키지에 있는 Java의 네트워크 프로그래밍 클래스입니다.
---- DatagramSocket // UDP 통신에 사용
---- ServerSocket // TCP 통신에 사용, 서버에 사용
---- Socket // Tcp 통신의 서버 및 클라이언트에 사용 Duan u 2, UDP 네트워크 프로그램
ineTadDress 클래스는 상호 연결 프로토콜(IP) 주소를 나타냅니다.
// Static Inetddress GetLocalHost () Throws UNKNOWNHOSTEXCEPION ame(문자열 호스트)는 지정된 호스트입니다. 호스트의 IP 주소를 확인합니다. 호스트 이름은 시스템 이름(예: "java.sun.com")이거나 해당 IP 주소의 텍스트 표현일 수 있습니다. //static InetAddress[] getAllByName(String 호스트)은 호스트 이름을 기반으로 IP 주소를 반환합니다. 로 구성된 배열입니다.static void ipDemo() throws UnknownHostException{ InetAddress netAddr=InetAddress.getLocalHost(); //取得本地电脑的一些信息System.out.println(netAddr.toString()); System.out.println(netAddr.getHostAddress()); System.out.println(netAddr.getHostName()); //取得其他电脑的信息InetAddress netAddr2=InetAddress.getByName("DELL-PC"); //这里也可以传IP地址System.out.println(netAddr2.getHostAddress()); //169.254.170.71System.out.println(netAddr2.getHostName()); //DELL-PC //取得百度的地址InetAddress [] ipList=InetAddress.getAllByName("www.baidu.com");for(InetAddress addr:ipList){ System.out.println(addr.toString()); } }
Sending end==java.net 패키지 가져오기UDP를 통해 데이터 보내기 :
1) UDPSocket 서비스 구축
2) 데이터 제공 및 데이터 패킷으로 데이터 캡슐화 DatagramPacket (byte[] buf, int length, InetAddress 주소, int 포트) //여러 생성자가 있습니다
3) Pass Socket 서비스, 데이터 전송
4) 리소스 닫기
import java.net.*;class Sender4{//DatagramPacket (byte[] buf, int length, InetAddress address, int port) public static void main(String [] args) throws Exception { byte [] buff="hello cat".getBytes(); DatagramSocket socket=new DatagramSocket(); DatagramPacket packet=new DatagramPacket(buff,buff.length,InetAddress.getByName("192.168.0.103"),8888); socket.send(packet); socket.close(); System.out.println("ok"); } }
-수신 종료
1) 소켓 서비스를 생성하고 특정 포트에서 수신 대기하도록 지정
3 ) 패키지
4) 리소스 닫기
import java.net.*;class Receive4 {public static void main(String [] args) throws Exception { DatagramSocket socket=new DatagramSocket(8888); //别忘了端口号byte[] buff=new byte[1024] ; DatagramPacket packet=new DatagramPacket(buff,buff.length); socket.receive(packet); String senderIp=packet.getAddress().getHostAddress(); String senderData=new String(packet.getData(),0,packet.getLength());int senderPort=packet.getPort(); System.out.println(senderIp+"---"+senderData+"---"+senderPort); socket.close(); } }//예제 2, 주기적 송수신
import java.net.*;import java.io.*;class NewSender{public static void main(String [] args) throws Exception { System.out.println("发送端启动了"); DatagramSocket socket=new DatagramSocket(); BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); //包装键盘输入流String str=null;while((str=br.readLine())!=null){byte [] buff=str.getBytes(); DatagramPacket packet=new DatagramPacket(buff,buff.length,InetAddress.getByName("127.0.0.1"),9000); socket.send(packet); } br.close(); socket.close(); } }
import java.net.*;class NewReceiver{public static void main(String [] args) throws Exception { DatagramSocket socket=new DatagramSocket(9000); System.out.println("接收端启动了"); while(true){ byte [] buff=new byte[1024] ; DatagramPacket packet=new DatagramPacket(buff,buff.length); socket.receive(packet); String senderIp=packet.getAddress().getHostAddress(); int sendPort=packet.getPort(); String msg= new String(packet.getData(),0,packet.getLength()); System.out.println(senderIp+":"+sendPort+":"+msg); } } }예 3: 멀티스레드 채팅방 프로그램
class Chat {public static void main(String [] args) {new Thread(new SendThread()).start(); new Thread(new ReceiveThread()).start(); } }
//发送端import java.io.*;import java.net.*;class SendThread implements Runnable { private DatagramSocket socket;public void run() {try{ socket=new DatagramSocket(); BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); String msg=null;while((msg=br.readLine())!=null){byte[] buff=msg.getBytes(); DatagramPacket packet=new DatagramPacket(buff,buff.length,InetAddress.getByName("127.0.0.1"),10000); socket.send(packet); } socket.close(); br.close(); }catch(Exception ex){ ex.printStackTrace(); } } }
//接收端import java.net.*;class ReceiveThread implements Runnable{ private DatagramSocket socket; public void run(){try{ socket=new DatagramSocket(10000);while(true){byte [] buff=new byte[1024]; DatagramPacket packet=new DatagramPacket(buff,buff.length); socket.receive(packet); String senderIp=packet.getAddress().getHostAddress();int senderPort=packet.getPort(); String msg=new String(packet.getData(),0,packet.getLength()); System.out.println(senderIp+":"+senderPort+":"+msg); } }catch(Exception ex) { System.out.println(ex.getMessage()); } } }
위 내용은 Java 네트워크 프로그래밍 예제에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!