ชั้นเรียน Java ที่เกี่ยวข้อง
ซ็อกเก็ต
public class Socket extends Object
・ ฟังก์ชั่น: ซ็อกเก็ตไคลเอนต์ TCP ・ วิธีการก่อสร้าง: ซ็อกเก็ต (ที่อยู่ inetaddress, พอร์ต int) สร้างซ็อกเก็ตสตรีมและเชื่อมต่อกับหมายเลขพอร์ตที่ระบุของที่อยู่ IP ที่ระบุ ・ วิธีการทั่วไป: 1. getInetAddress รับข้อมูลที่เกี่ยวข้อง
เซิร์ฟเวอร์
public class ServerSocket extends Object
・ ฟังก์ชั่น: ซ็อกเก็ตเซิร์ฟเวอร์ TCP ・ วิธีการก่อสร้าง: Serversocket (พอร์ต int) สร้างซ็อกเก็ตเซิร์ฟเวอร์ที่ถูกผูกไว้กับพอร์ตเฉพาะ ・ วิธีการทั่วไป: 1. การรับซ็อกเก็ตของไคลเอนต์ที่เชื่อมต่อกับ TCP 2. เปิดเผยสถานะปิดของ Serversocket
ด้านเซิร์ฟเวอร์ TCP
tcpserver.java
เซิร์ฟเวอร์ใช้วิธีการหลายเธรด ทุกครั้งที่มีการสร้างการเชื่อมต่อจะเริ่มเธรด Java และส่งภาพไปยังไคลเอนต์จากนั้นการเชื่อมต่อ TCP จะถูกปิด
แพ็คเกจ cn.xidian.tcpsocket; นำเข้า java.io.file; นำเข้า java.io.fileinputstream; นำเข้า java.io.ioException; นำเข้า java.io.OutputStream; นำเข้า Java.net.serversocket; นำเข้า Java.net.socket {super (); this.clientsocket = clientsocket;}@reverride public void run () {ลอง {// รับที่อยู่ IP ของลูกค้าและชื่อโฮสต์สตริง clientaddress = clientsocket.getInetAddress (). getHostaddress (); "(" + clientAddress + ")" + "เชื่อมต่อสำเร็จ!"); system.out.println ("ตอนนี้ถ่ายโอนข้อมูลภาพ ......... "); starttime long = system.currentTimeMillis (); // get outputStreamOutputTream out = clientsocket.getOuttReam () ไฟล์ ("/home/gavinzhou/test.jpg")); byte [] data = byte ใหม่ [4096]; ความยาว int = 0; ในขณะที่ (ความยาว = in.read (data))! = -1) {out.write (ข้อมูล, 0, ความยาว); "(" + clientAddress + ")" + "การส่งภาพนั้นสำเร็จ" + "เวลา:" + ((endtime-starttime)) + "ms"); // ปิดทรัพยากรใน close (); clientsocket.close (); system.out.println ("ปิดการเชื่อมต่อ!"); args) พ่น IOException {// สร้างบริการการเชื่อมต่อ TCP, ผูกพอร์ต serversocket tcpserver = serversocket ใหม่ (9090); // ยอมรับการเชื่อมต่อและส่งผ่านภาพไปยังไคลเอนต์ที่เชื่อมต่อ การเชื่อมต่อ TCP แต่ละครั้งคือเธรด Java ในขณะที่ (จริง) {Socket CrientSocket = tcpserver.accept (); tcpserver ใหม่ (clientsocket) .start ();}}}}ไคลเอนต์ TCP
TCPClient
แพ็คเกจ cn.xidian.tcpsocket; นำเข้า java.io.file; นำเข้า java.io.fileoutputstream; นำเข้า java.io.ioException; นำเข้า java.io.InputStream; นำเข้า Java.net.inputStream; นำเข้า Java.net.socket; สร้างบริการ TCP // เชื่อมต่อกับซ็อกเก็ตเซิร์ฟเวอร์เซิร์ฟเวอร์เนทีฟ = ซ็อกเก็ตใหม่ (inetAddress.getLocalHost (), 9090); // รับอินพุตสตรีมอินพุตอินพุตสตรีม = socket.getInputStream (); length = 0; ในขณะที่ ((length = inputstream.read (data))! = -1) {out.write (ข้อมูล, 0, ความยาว);} // ปิดทรัพยากรออก out.close (); socket.close ();}}ผลลัพธ์
ก่อนอื่นให้เริ่มเซิร์ฟเวอร์บนบรรทัดคำสั่งจากนั้นเริ่มไคลเอนต์ ผลลัพธ์มีดังนี้:
ภาพค่อนข้างเล็กและเร็วมาก!
สรุป
ข้างต้นเป็นเนื้อหาที่สมบูรณ์ของบทความนี้เกี่ยวกับการเขียนโปรแกรม Java เพื่อใช้เซิร์ฟเวอร์ TCP แบบมัลติเธรด ฉันหวังว่ามันจะเป็นประโยชน์กับทุกคน เพื่อนที่สนใจสามารถอ้างถึงหัวข้ออื่น ๆ ที่เกี่ยวข้องในเว็บไซต์นี้ต่อไป หากมีข้อบกพร่องใด ๆ โปรดฝากข้อความไว้เพื่อชี้ให้เห็น ขอบคุณเพื่อนที่ให้การสนับสนุนเว็บไซต์นี้!