Java网络编程2---Socket-TCP编程
生活随笔
收集整理的這篇文章主要介紹了
Java网络编程2---Socket-TCP编程
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Sockct:插座
Socket是關于TCP的。
端口號:兩個字節->65536個端口號,一個應用程序占多個端口號;
但是假設一個應用程序占一個端口號;一臺電腦會有65535個應用程序。
自己編寫程序要占用端口號1024以上后的。
80端口:網頁
端口號分為:TCP端口和UDP端口。每個有65535個端口。
通過管道(流)來說話
栗子:服務器端:
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);//服務器監聽6666端口口while(true) { Socket s =ss.accept();//自身建立一個Socket與客戶端連接System.out.println("A client connect!");//阻塞式的連接,一個客戶端連接,另外一個客戶端不會鏈接。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隨機某個端口去連接服務器的6666OutputStream oStream = s.getOutputStream();//拿到輸出管道;DataOutputStream dataOutputStream = new DataOutputStream(oStream);dataOutputStream.writeUTF("hello server!");dataOutputStream.flush();dataOutputStream.close();s.close();} }-----------------------------------------------------------------------------
---------------------------------------------------------------------------->
栗子1:(一端說,一端聽):TestServer.java &&TestClient.java
服務器端:package com.zhj.www;import java.io.DataOutputStream; import java.io.OutputStream; import java.net.ServerSocket; import java.net.Socket;public class TestServer {/*拿到服務器端的數據寫到客戶端*/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");//客戶端的端口號是隨機的dataOutputStream.close();socket.close();}}catch (Exception e) {e.getStackTrace();System.out.println("程序運行出錯:"+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("服務器連接失敗!");} catch (IOException e) {e.getStackTrace();}}}
--------------------------------------------------------------------------------->
栗子2(兩端都說,兩端都聽) TestSocketServer.java && TestSocketClient.java
服務器端:
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();}} }客戶端:
栗子3:聊天程序:
總結
以上是生活随笔為你收集整理的Java网络编程2---Socket-TCP编程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 高性能Mysql(第三版)
- 下一篇: Java网络编程3---Socket-U