//ส่งคืนชื่อโฮสต์ท้องถิ่นและที่อยู่ IP;
InetAddress i = InetAddress.getLocalHost();
i.getHostAddress();//IP
i.getAddress();//???
//รับข้อมูลที่เกี่ยวข้องกับคอมพิวเตอร์ผ่านชื่อคอมพิวเตอร์
InetAddress i = InetAddress.getByName("ลิฟวิงสโตน-พีซี");
//รับข้อมูลที่เกี่ยวข้องกับโฮสต์ผ่านชื่อโดเมน
InetAddress ibaidu = InetAddress.getByName("www.baidu.com");
URL URL = URL ใหม่ ("http://localhost:8080/demo.html");
url.getHost();
ซ็อกเก็ต (ไคลเอนต์):
เมื่อสร้างออบเจ็กต์แล้ว คุณสามารถเชื่อมต่อกับโฮสต์ที่ระบุได้ เนื่องจาก TCP เป็นแบบเชิงการเชื่อมต่อ เมื่อสร้างบริการซ็อกเก็ต ต้องมีเซิร์ฟเวอร์อยู่และการเชื่อมต่อสำเร็จ หลังจากสร้างการเชื่อมต่อแล้ว การส่งข้อมูลจะดำเนินการในช่องสัญญาณ ;
//สร้างบริการซ็อกเก็ตของลูกค้าและระบุโฮสต์และพอร์ตเป้าหมาย
ซ็อกเก็ต s = ซ็อกเก็ตใหม่ ("cj-PC", 10003);
// ในการส่งข้อมูลควรได้รับกระแสเอาต์พุตในซ็อกเก็ตสตรีม
OutputStream ออก = s.getOutputStream();
//PrintWriter out = new PrintWriter(s.getOutputStream(),true);out.println("Hello");
out.write("สวัสดี".getBytes());
//ได้รับข้อความตอบกลับ
InputStream ใน = s.getInputStream();
ไบต์ [] bufIn = ไบต์ใหม่ [1024];
int num = in.read(bufIn);
System.out.println (สตริงใหม่ (bufIn, 0, num));
s.close();//กระแสวัตถุในถูกห่อหุ้มอยู่ในซ็อกเก็ตและปิดวัตถุกระแสโดยอัตโนมัติ
เซิร์ฟเวอร์ซ็อกเก็ต (เซิร์ฟเวอร์):
สร้างบริการซ็อกเก็ตฝั่งเซิร์ฟเวอร์ ServerSocket และรับฟังพอร์ต
รับวัตถุไคลเอนต์ที่เชื่อมต่อผ่านวิธีการยอมรับของวัตถุ หากไม่มีการเชื่อมต่อ มันจะรอ (บล็อก):
หากไคลเอนต์ส่งข้อมูล เซิร์ฟเวอร์จะต้องใช้กระแสการอ่านของวัตถุไคลเอนต์ที่เกี่ยวข้องเพื่อรับข้อมูลที่ส่งโดยไคลเอนต์
ServerSocket ss = ServerSocket ใหม่ (10003);
//ServerSocket(int port,int backlog); คือจำนวนการเชื่อมต่อสูงสุด
ซ็อกเก็ต s = ss.accept();
InputStream ใน = s.getInputStream();
ไบต์ [] buf = ไบต์ใหม่ [2014];
int len = in.read(buf);
String rec = สตริงใหม่ (buf, 0, len);
System.out.println(บันทึก);
//ส่งข้อความกลับ
OutputStream ออก = s.getOutputStream();
out.write("ได้รับ".getBytes());
s.close();//เซิร์ฟเวอร์จะปิดไคลเอนต์โดยอัตโนมัติ
(1) ลูกค้า:
สร้างบริการซ็อกเก็ตและระบุโฮสต์และพอร์ตที่จะเชื่อมต่อ
รับสตรีมเอาต์พุตในซ็อกเก็ตสตรีม เขียนข้อมูลไปยังสตรีม และส่งไปยังเซิร์ฟเวอร์ผ่านเครือข่าย
รับอินพุตสตรีมในซ็อกเก็ตสตรีม รับข้อมูลที่เซิร์ฟเวอร์ป้อนกลับ และปิดทรัพยากรไคลเอ็นต์
DatagramSocket: ส่งข้อมูลข้อความผ่านการส่ง UDP
ส่ง:
//สร้างบริการ udp สร้างวัตถุ DatagramSocket และระบุหมายเลขผลิตภัณฑ์
ซ็อกเก็ต DatagramSocket = DatagramSocket ใหม่ (8888);
// กำหนดข้อมูลและห่อหุ้มลงในแพ็กเก็ตข้อมูล DatagramPacket (ต้องระบุหมายเลขพอร์ตของเครื่องปลายทาง)
ไบต์[] buf = "udp ฉันกำลังมา".getBytes();
DatagramPacket dp = DatagramPacket ใหม่ (buf, buf.length,
InetAddress.getByName("ชื่อเครื่องจักร"), 10086);
// ส่ง;
ซ็อกเก็ต.ส่ง(dp);
// ปิด;
ซ็อกเก็ต.ปิด();
รับ:
//กำหนดบริการ udpsocket โดยปกติแล้วพอร์ตจะถูกตรวจสอบ ซึ่งจริงๆ แล้วกำหนดรหัสดิจิทัลสำหรับแอปพลิเคชันเครือข่ายที่รับ
ซ็อกเก็ต DatagramSocket = DatagramSocket ใหม่ (10086);
ในขณะที่ (จริง) { //จุดประสงค์คือเพื่อติดตามอย่างต่อเนื่อง
ไบต์ [] buf = ไบต์ใหม่ [1024];
//กำหนดแพ็คเกจข้อมูลสำหรับการจัดเก็บข้อมูล
DatagramPacket dp = DatagramPacket ใหม่ (buf, buf.length);
// เก็บข้อมูลที่ได้รับลงในแพ็กเก็ตข้อมูลผ่านวิธีการรับของบริการ
socket.receive(dp);//วิธีการบล็อก ติดอยู่ที่นี่หากไม่มีข้อมูล
// รับข้อมูลผ่านวิธีแพ็กเก็ตข้อมูล
สตริง ip = dp.getAddress().getHostAddress();
ข้อมูลสตริง = สตริงใหม่ (dp.getData(), 0, dp.getLength());
พอร์ต int = dp.getPort();
-
Socket s = ซ็อกเก็ตใหม่ ("ชื่อเครื่อง", 10005);
OutputStream ออก = s.getOutputStream();
FileInputStream fis = new FileInputStream("awf.jpg");
ไบต์ [] buf = ไบต์ใหม่ [1024];
อินท์เลน = 0;
ในขณะที่ ((len = fis.read(buf)) != -1) {
out.write (buf, 0, len);
-
// หยุดส่งข้อมูล
s.ปิดระบบเอาท์พุต();
ServerSocket ss = new ServerSocket(10005); //ss.accept() วิธีการมีผลในการบล็อก;
// สามารถสร้างเธรดแยกสำหรับแต่ละซ็อกเก็ตที่ได้รับโดยเมธอด Accept()