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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

java Socket编程

發(fā)布時間:2023/12/10 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java Socket编程 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

目錄

      • 一、socket簡單客戶端與服務端
      • 二、socket客戶端多次發(fā)送消息到服務端
      • 三、socket多客戶端多次發(fā)送消息到服務端

一、socket簡單客戶端與服務端

客戶端發(fā)送消息給服務端,服務端接收到消息后回應客戶端。

客戶端:

import java.io.*; import java.net.Socket;public class MainClient1 {public static void main(String[] args) {try {//設置發(fā)送到的ip和端口Socket socket = new Socket("127.0.0.1", 9999);//從socket獲取輸出流到緩沖寫區(qū),用來發(fā)送數(shù)據到服務端BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));//獲取Socket的輸入流,用來接收從服務端發(fā)送過來的數(shù)據DataInputStream in = new DataInputStream(socket.getInputStream());//緩沖讀區(qū)的內容寫入緩沖寫區(qū),發(fā)送到服務端bufferedWriter.write("你好,我的第一個socket!");bufferedWriter.flush();socket.shutdownOutput();//獲取服務端返回的數(shù)據System.out.println(in.readUTF());} catch (IOException e) {e.printStackTrace();}} }

服務端:

import java.io.BufferedReader; import java.io.DataOutputStream; import java.io.IOException; import java.io.InputStreamReader; import java.net.ServerSocket; import java.net.Socket;public class MainServer {public static void main(String[] args) {try {//服務端綁定端口ServerSocket serverSocket = new ServerSocket(9999);//獲取客戶端連接(accept是阻塞的,如果有多個客戶端而服務端不用多線程會只獲取第一個連接的客戶端)Socket socket = serverSocket.accept();//獲取Socket的輸出流,用來向客戶端發(fā)送數(shù)據DataOutputStream out = new DataOutputStream (socket.getOutputStream());//獲取Socket的輸入流,用來接收從客戶端發(fā)送過來的數(shù)據BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream(), "UTF-8"));String str = reader.readLine();System.out.println("客戶端發(fā)來的消息:"+str);//發(fā)送消息到對應的客戶端out.writeUTF("服務端回復:已收到你的消息\"" + str+"\"");} catch (IOException e) {e.printStackTrace();}} }

測試:
先啟動服務端,再啟動客戶端。

二、socket客戶端多次發(fā)送消息到服務端

客戶端從鍵盤可多次發(fā)送消息給服務端,服務端接每次收到消息后回應客戶端。

客戶端:

import java.io.*; import java.net.Socket;public class MainClient1 {public static void main(String[] args) {try {//設置發(fā)送到的ip和端口Socket socket = new Socket("127.0.0.1", 9999);//從socket獲取輸出流到緩沖寫區(qū)BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in, "UTF-8"));//獲取Socket的輸入流,用來接收從服務端發(fā)送過來的數(shù)據DataInputStream in = new DataInputStream(socket.getInputStream());while (true) {//獲取鍵盤輸入的內容到緩沖讀區(qū)bufferedWriter.write(bufferedReader.readLine());bufferedWriter.write("\n");bufferedWriter.flush();//獲取服務端返回的數(shù)據System.out.println(in.readUTF());}} catch (IOException e) {e.printStackTrace();}} }

服務端:

import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.ServerSocket; import java.net.Socket;public class MainServer {public static void main(String[] args) {try {//服務端綁定端口ServerSocket serverSocket = new ServerSocket(9999);//獲取客戶端連接Socket socket = serverSocket.accept();//獲取Socket的輸出流,用來向客戶端發(fā)送數(shù)據DataOutputStream out = new DataOutputStream (socket.getOutputStream());//獲取Socket的輸入流,用來接收從客戶端發(fā)送過來的數(shù)據BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream(), "UTF-8"));String str ;while ((str = reader.readLine()) != null) {//輸出打印System.out.println("客戶端發(fā)來的消息:"+str);//發(fā)送消息到對應的客戶端out.writeUTF("服務端回復:已收到你的消息\"" + str+"\"");}} catch (IOException e) {e.printStackTrace();}} }

測試:
先啟動服務端,再啟動客戶端,客戶端可多次輸入消息。

三、socket多客戶端多次發(fā)送消息到服務端

上面的例子是一個客戶端對應一個服務端,下面采用多線程對多個客戶端對應一個服務端進行示例說明。

客戶端1:

import java.io.*; import java.net.Socket;public class MainClient1 {public static void main(String[] args) {try {//設置發(fā)送到的ip和端口Socket socket = new Socket("127.0.0.1", 9999);//從socket獲取輸出流到緩沖寫區(qū)BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in, "UTF-8"));//獲取Socket的輸入流,用來接收從服務端發(fā)送過來的數(shù)據DataInputStream in = new DataInputStream(socket.getInputStream());while (true) {//獲取鍵盤輸入的內容到緩沖讀區(qū)bufferedWriter.write(bufferedReader.readLine());bufferedWriter.write("\n");bufferedWriter.flush();//獲取服務端返回的數(shù)據System.out.println(in.readUTF());}} catch (IOException e) {e.printStackTrace();}} }

客戶端2:

import java.io.*; import java.net.Socket;public class MainClient2 {public static void main(String[] args) {try {//設置發(fā)送到的ip和端口Socket socket = new Socket("127.0.0.1", 9999);//從socket獲取輸出流到緩沖寫區(qū)BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in, "UTF-8"));//獲取Socket的輸入流,用來接收從服務端發(fā)送過來的數(shù)據DataInputStream in = new DataInputStream(socket.getInputStream());while (true) {//獲取鍵盤輸入的內容到緩沖讀區(qū)bufferedWriter.write(bufferedReader.readLine());bufferedWriter.write("\n");bufferedWriter.flush();//獲取服務端返回的數(shù)據System.out.println(in.readUTF());}} catch (IOException e) {e.printStackTrace();}} }

服務端:

import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.ServerSocket; import java.net.Socket; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors;public class MainServer {public static void main(String[] args) {try {//服務端綁定端口ServerSocket serverSocket = new ServerSocket(9999);//定長線程池ExecutorService executorService = Executors.newFixedThreadPool(100);while (true) {Socket socket = serverSocket.accept();//每當有一個服務端連接到服務器就新開一個線程處理executorService.execute(() -> {try {//socket中獲取輸入流到緩沖區(qū)BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream(), "UTF-8"));//獲取Socket的輸出流,用來向客戶端發(fā)送數(shù)據DataOutputStream out = new DataOutputStream (socket.getOutputStream());String str;//讀取緩沖區(qū)信息到str并輸出while (((str = reader.readLine()) != null)) {System.out.println("客戶端發(fā)來的消息:"+str);//發(fā)送消息到對應的客戶端out.writeUTF("服務端回復:已收到你的消息\"" + str+"\"");}} catch (IOException e) {e.printStackTrace();}});}} catch (IOException e) {e.printStackTrace();}} }

測試:
先啟動服務端,再啟動兩個客戶端,兩個客戶端可多次輸入消息接受服務端的響應。



在idea中啟動多個main的方法技巧:

要啟動哪個就右上角切換哪個。


參考:

Java socket詳解,看這一篇就夠了

Java Socket 服務端發(fā)送數(shù)據 客戶端接收數(shù)據

Java TCP Socket 編程

總結

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

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

主站蜘蛛池模板: 熟女人妻视频 | av黄色在线看 | 暖暖av | 久草资源在线观看 | 午夜视频久久久 | 国产aⅴ一区二区三区 | 欧美精品在线观看视频 | 一区二区视频在线观看 | japanese国产在线观看 | 国产天堂在线观看 | 裸体喂奶一级裸片 | 国产午夜视频在线 | 最色网站| 曰本黄色片 | 欧美在线导航 | 一级爱爱免费视频 | 7799精品视频 | 国产又粗又大又爽视频 | 色妞综合网 | 欧美特黄一区二区三区 | 欧美极品在线视频 | 丁香社区五月天 | 欧美在线免费观看 | 亚洲欧美一区二区三区孕妇 | 奇米一区二区三区 | 操丝袜少妇 | eeuss国产一区二区三区黑人 | 91欧美日韩麻豆精品 | 国产精品免费一区二区三区 | 亚天堂| 婷婷亚洲精品 | 91在线无精精品入口 | 亚洲欧美一区二区三区四区五区 | 2025国产精品 | 色婷婷伊人 | 日韩一级久久 | 欧美成人免费播放 | 欧美伦理在线观看 | 亚洲欧美一区二区三区在线观看 | 波多野结衣在线播放视频 | 毛片www| 美女超碰 | 国产伦精品一区二区三区四区视频 | 一级二级三级视频 | 噜噜噜噜私人影院 | 美女黄色大片 | av影视天堂 | 色天天| 美女扒开腿让男人捅 | 中文字幕在线播放不卡 | 成人学院中文字幕 | 苏晴忘穿内裤坐公交车被揉到视频 | 国产 日韩 欧美 综合 | 91香蕉一区二区三区在线观看 | 丁香av | 日韩乱码一区二区三区 | 国产精品字幕 | 一区二区片 | 亚洲欧美激情在线观看 | 看av在线| 一二三不卡 | 九热视频在线观看 | 亚洲一二三在线 | 欧美 日韩 国产在线 | 打屁股无遮挡网站 | 国产成人精品无码播放 | 中文字幕一区二区人妻电影丶 | 97人人爽人人爽人人爽人人爽 | 黄瓜视频在线观看污 | 国产精品乱码久久久 | 青青青在线视频 | 无码精品国产一区二区三区免费 | 国产吞精囗交久久久 | 欧洲影院| 亚洲精品少妇久久久久久 | 日韩欧美高清在线观看 | 一区二区三区少妇 | 在线免费观看av片 | 精品国产免费一区二区三区 | 国产一区二区视频免费在线观看 | 日本黄色美女网站 | 日韩视频一区二区 | 毛片内射| 性欧美丰满熟妇xxxx性 | 国产真实乱 | 久久久国产亚洲 | 91视频看 | 久草精品在线观看视频 | 久久精品噜噜噜成人88aⅴ | 伊人成人久久 | 真实新婚偷拍xxxxx | 99精品视频免费 | 91视频黄| 99久久99久久精品国产片 | 女女同性女同一区二区三区按摩 | 女优在线观看 | 黄色大尺度视频 | 免费看v片| 日韩成人午夜影院 |