TCP實(shí)現(xiàn)
創(chuàng)新互聯(lián)堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的順城網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!TCP協(xié)議需要在雙方之間建立連接,通過(guò)輸入輸出流來(lái)進(jìn)行數(shù)據(jù)的交換,建立需要通過(guò)三次握手,斷開需要四次揮手,保證了數(shù)據(jù)的完整性,但傳輸效率也會(huì)相應(yīng)的降低。
簡(jiǎn)單的TCP實(shí)現(xiàn)
//服務(wù)端 public class TcpServer { public static void main(String[] args) throws IOException { ServerSocket serverSocket = new ServerSocket(8886); // 建立服務(wù)端,ip為本機(jī)ip,端口為8886 Socket accept = serverSocket.accept(); // 監(jiān)聽客戶端的連接,一旦有客戶端連接,則會(huì)返回客戶端對(duì)應(yīng)的accept InputStream in = accept.getInputStream(); //獲取到客戶端的輸出流 byte b[] = new byte[1024]; int len = in.read(b); System.out.println("接受到客戶端數(shù)據(jù),返回?cái)?shù)據(jù)"+new String(b,0,len)); OutputStream out = accept.getOutputStream(); // 給客戶端發(fā)送消息 out.write("服務(wù)端已經(jīng)接受".getBytes()); serverSocket.close(); } } // 客戶端 public class TcpClient { public static void main(String[] args) throws IOException { Socket socket = new Socket("127.0.0.1", 8886); // 通過(guò)Socket來(lái)建立和服務(wù)端的連接 OutputStream out = socket.getOutputStream(); // 獲取輸出流(客戶端輸出流即向服務(wù)端輸出信息) out.write("hello tcp Server".getBytes()); // 輸出信息 InputStream in = socket.getInputStream(); // 接受服務(wù)端的消息 byte b[] = new byte[1024]; int len = in.read(b); System.out.println("接受到服務(wù)器消息 : "+new String(b,0,len)); // 輸出 out.write("返回的的數(shù)據(jù)已經(jīng)收到 ".getBytes()); // 向服務(wù)器返回消息 socket.close(); } }