日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > java >内容正文

java

Java网络编程2---Socket-TCP编程

發(fā)布時(shí)間:2023/12/10 java 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java网络编程2---Socket-TCP编程 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Sockct:插座

Socket是關(guān)于TCP的。

端口號(hào):兩個(gè)字節(jié)->65536個(gè)端口號(hào),一個(gè)應(yīng)用程序占多個(gè)端口號(hào);

但是假設(shè)一個(gè)應(yīng)用程序占一個(gè)端口號(hào);一臺(tái)電腦會(huì)有65535個(gè)應(yīng)用程序。

自己編寫程序要占用端口號(hào)1024以上后的。

80端口:網(wǎng)頁(yè)

端口號(hào)分為:TCP端口和UDP端口。每個(gè)有65535個(gè)端口。




通過(guò)管道(流)來(lái)說(shuō)話

栗子:
服務(wù)器端:

package com.zhj.www; import java.io.DataInputStream; import java.io.InputStream; import java.net.*; public class TCPServer {public static void main(String[] args)throws Exception {ServerSocket ss = new ServerSocket(6666);//服務(wù)器監(jiān)聽6666端口口while(true) { Socket s =ss.accept();//自身建立一個(gè)Socket與客戶端連接System.out.println("A client connect!");//阻塞式的連接,一個(gè)客戶端連接,另外一個(gè)客戶端不會(huì)鏈接。DataInputStream dis = new DataInputStream(s.getInputStream());System.out.println(dis.readUTF());dis.close();s.close();}} }

客戶端:

package com.zhj.www; import java.io.DataOutputStream; import java.io.OutputStream; import java.net.*; public class TCPClient {public static void main(String[] args) throws Exception {Socket s = new Socket("127.0.0.1", 6666);//建立連接,client隨機(jī)某個(gè)端口去連接服務(wù)器的6666OutputStream oStream = s.getOutputStream();//拿到輸出管道;DataOutputStream dataOutputStream = new DataOutputStream(oStream);dataOutputStream.writeUTF("hello server!");dataOutputStream.flush();dataOutputStream.close();s.close();} }

-----------------------------------------------------------------------------

---------------------------------------------------------------------------->

栗子1:(一端說(shuō),一端聽):TestServer.java &&TestClient.java

服務(wù)器端:
package com.zhj.www;import java.io.DataOutputStream; import java.io.OutputStream; import java.net.ServerSocket; import java.net.Socket;public class TestServer {/*拿到服務(wù)器端的數(shù)據(jù)寫到客戶端*/public static void main(String[] args) {try {ServerSocket ss = new ServerSocket(8888);while(true) {Socket socket = ss.accept();OutputStream oStream = socket.getOutputStream();DataOutputStream dataOutputStream = new DataOutputStream(oStream);dataOutputStream.writeUTF("Hello,"+socket.getInetAddress()+"port #"+socket.getPort()+" bye-bye");//客戶端的端口號(hào)是隨機(jī)的dataOutputStream.close();socket.close();}}catch (Exception e) {e.getStackTrace();System.out.println("程序運(yùn)行出錯(cuò):"+e);}}}客戶端:
package com.zhj.www;import java.io.DataInputStream; import java.io.IOException; import java.io.InputStream; import java.net.ConnectException; import java.net.Socket;public class TestClient {public static void main(String[] args) {try {Socket socket = new Socket("127.0.0.1", 8888);InputStream is =socket.getInputStream();DataInputStream dInputStream = new DataInputStream(is);System.out.print(dInputStream.readUTF());dInputStream.close();socket.close();}catch (ConnectException connExc) {connExc.getStackTrace();System.out.println("服務(wù)器連接失敗!");} catch (IOException e) {e.getStackTrace();}}}

--------------------------------------------------------------------------------->

栗子2(兩端都說(shuō),兩端都聽) TestSocketServer.java && TestSocketClient.java

服務(wù)器端:

package com.zhj.www;import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.ServerSocket; import java.net.Socket;public class TestSocketServer {public static void main(String[] args) {InputStream in = null;OutputStream out = null;try {ServerSocket ss = new ServerSocket(5888);Socket socket = ss.accept();in = socket.getInputStream();out = socket.getOutputStream();DataOutputStream dataOutputStream = new DataOutputStream(out);DataInputStream dataInputStream = new DataInputStream(in);String string = null;if ((string = dataInputStream.readUTF()) != null) {System.out.println(string);System.out.println("from: "+socket.getInetAddress());System.out.println("Port:"+socket.getPort());}dataOutputStream.writeUTF("hi,hello");dataOutputStream.close();dataInputStream.close();socket.close();} catch (IOException e) {e.printStackTrace();}} }

客戶端:

package com.zhj.www;import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.Socket;public class TestSocketClient {public static void main(String[] args) {InputStream inputStream =null;OutputStream outputStream = null;try {Socket socket= new Socket("localhost", 5888);inputStream = socket.getInputStream();outputStream =socket.getOutputStream();DataInputStream dataInputStream = new DataInputStream(inputStream);DataOutputStream dataOutputStream = new DataOutputStream(outputStream);dataOutputStream.writeUTF("hey");String string = null;while((string = dataInputStream.readUTF())!= null) {System.out.println(string); }dataOutputStream.close();dataInputStream.close();socket.close();}catch (UnknownError e) {e.printStackTrace();} catch (IOException e) {e.getStackTrace();}} }

栗子3:聊天程序:







總結(jié)

以上是生活随笔為你收集整理的Java网络编程2---Socket-TCP编程的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。