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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java socket通信

發布時間:2025/5/22 编程问答 64 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java socket通信 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

socket通信是指兩臺計算機的兩個程序之間的通信,雙向鏈路的每一端都稱為一個socket,但分為客戶機和服務器。

java.net提供了ServerSocket和Socket類,分別用于服務器和客戶端。

通信過程:

建立Socket連接,客戶端程序申請連接,服務器端程序監聽所有端口,判斷是否有客戶端的服務器請求,當客戶端申請某個端口連接時,服務器將對方的ip和端口號綁定形成套接字,這樣服務器和客戶機就建立了一個專用虛擬連接,可以相互通信了,通信結束后將虛擬連接拆除。

編程步驟:服務器先建立一個服務器套接字ServerSocket,并指定端口號監聽客戶機請求,然后建立一個Socket用來和客戶機通信,客戶機建立端建立同一端口的Socket以便和服務器通信。

?

java.net包含以上兩個類:

主要方法說明:

ServerSocket(int port)在指定端口上創建服務器Socket對象

ServerSocket(int port,int count)count 為最大連接數

Sorket(InetAddress IP,int port)使用指定IP和端口建立Socket對象

Sorket(String host,int port)使用指定主機和端口建立Socket對象

以上兩個方法有對三個選項 boolean stream(布爾值表示是否選用流式通信)

可以用Socket類的 getInputstream 和getOutstream來讀寫數據的輸入輸出流。但要進行異常處理,讀取輸入輸出流后要建立更容易操作的InputStreamReader和Out..... 通信結束后close(Socket)斷開連接。

?

Socket應用:

?

服務器:

package Socket;
import java.io.*;
import java.net.*;
public class Serverclass{?
public static final int SERVERPORT = 9999; //服務器端口號
public static void main(String[] args ){?
try{?
ServerSocket s = new ServerSocket(SERVERPORT);?
System.out.println("開始:" + s); //建立服務器端監聽套接字
Socket incoming = s.accept( );//等待并接收請求,建立連接套接字
System.out.println("連接并接收到:" + incoming);//收到連接請求,incoming為套接字端口
BufferedReader in = new BufferedReader(new InputStreamReader(incoming.getInputStream()));
//新建網絡連接輸入流,讀取incoming端口傳來的信息,為一個對象,傳入數據的格式,通過in.readline()翻譯
PrintWriter out = new PrintWriter( new BufferedWriter(new OutputStreamWriter(incoming.getOutputStream())), true);
//新建自動刷新的網絡輸出流,作用:通過out.println()向客戶端輸出信息。
System.out.println( "輸入quit退出" );?
while (true){?
String line = in.readLine(); //按行讀取socket輸入
if (line == null) break;
else{?
if (line.trim().equals("quit")){
System.out.println("客戶端輸入了quit!");
System.out.println("連接已經關閉!");
break; }
System.out.println("客戶端輸入的是:" + line);
out.println("您輸入的是:" + line);}}?
incoming.close();}
catch (IOException e){ //異常處理?
System.err.println("輸入輸出異常"+e.getMessage());}
}
}

?

?

?

客戶端:

package S;
import java.io.*;
import java.net.*;

public class server {
public static final int PORT=9999;
public static void main(String args[]){
try{
Socket s=new Socket("localhost",PORT);//建立連接套接字
System.out.println("socket"+s);//輸出端口信息
//新建網絡連接輸入流
BufferedReader in=new BufferedReader(new InputStreamReader(s.getInputStream()));
//自動刷新的網絡連接輸出流
PrintWriter out=new PrintWriter(new BufferedWriter(new OutputStreamWriter(
s.getOutputStream())),true);
//構造stdin
BufferedReader stdin=new BufferedReader(new InputStreamReader(System.in));
System.out.println("輸入一個字符串,quit退出");
while(true){
//先對如系統輸入,在通過套接字輸出,out為PrintWriter對象
out.println(stdin.readLine());//out的參數為BufferedWriter類,stdin。readline()
String str=in.readLine();
if(str==null)
break;
System.out.println(str);

}
s.close();
}
catch(IOException e){
System.err.println("錯誤:"+e.getMessage() );
}
}

}

?

轉載于:https://www.cnblogs.com/hitxx/p/4849592.html

總結

以上是生活随笔為你收集整理的java socket通信的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。