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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java Socket入门实例

發布時間:2025/7/14 java 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java Socket入门实例 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

? ? 基于測試驅動的Socket入門實例(代碼的具體功能可以看我的程序中的注釋,不理解的可以短信我)

? ?先看Server的代碼:

? ?package socketStudy;

import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.ServerSocket; import java.net.Socket; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.List; import org.apache.log4j.Logger;/*** 類ServerSocket.java的實現描述:*/ public class Server {private static final Logger log = Logger.getLogger("actionLog");private ServerSocket server;private List<String> list = new ArrayList<String>();public Server(int port) throws IOException{server = new ServerSocket(port);}/*** 啟動server的監聽程序,當server關閉的時候停止監聽* * @throws IOException*/public void listen() throws IOException {Socket client;String temp;BufferedReader br = null;//如果當前server已經手動關閉,則終止監聽while (!server.isClosed()) {// 每當檢測到套接字,就獲得一個socket鏈接// 這個方法在連接傳入之前,一直阻塞client = server.accept();//注意這里只需要獲取一次client的輸入流即可br = new BufferedReader(new InputStreamReader(client.getInputStream()));temp = br.readLine();while (temp != null) {list.add(temp);temp = br.readLine();}//這里立即關閉了client,事實上可以建立個timeOut時間if(client.isClosed()){client.close();}br.close();}}/*** 每次都返回當前的套接字的傳入內容<br/>* 在返回后清空當前的list* * @return List<String>*/public synchronized List<String> getList() {List<String> newArrayList=new ArrayList<String>(Arrays.asList(new String[list.size()]));Collections.copy(newArrayList, list);list.clear();return newArrayList;}/*** 返回當前server是否成功綁定上指定接口<br/>* true表示成功綁定,false則表示沒有綁定* * @return boolean */public boolean isBound() {return server.isBound();}/*** 關閉當前server*/public void close() {if (server != null) {try {server.close();} catch (IOException e) {log.error(e.getMessage(), e);}}}@Overridepublic String toString() {return this.server.toString();}}

?

?

? ?再看client的程序示例;

? ?package socketStudy;

import java.io.IOException; import java.io.PrintWriter; import java.net.Socket; import java.net.UnknownHostException;import org.apache.log4j.Logger;/*** 類Client.java的實現描述:*/ public class Client {private static final Logger log = Logger.getLogger("actionLog");private Socket client;private PrintWriter out;public Client(String serverIp, int port) throws UnknownHostException, IOException{client = new Socket(serverIp, port);out = new PrintWriter(client.getOutputStream(), true);}/*** 向server發送消息* * @param message*/public void send(String message) {out.println(message);}/*** 關閉當前client*/public void close() {if (client != null) {try {client.close();} catch (IOException e) {log.error(e.getMessage(), e);}}if (out != null) {out.close();}} }

?

? ? 最后看我們的測試代碼(基于testng)

? ??package test;

import java.io.IOException; import java.util.Arrays; import java.util.List;import org.testng.Assert; import org.testng.annotations.Test; import socketStudy.Client; import socketStudy.Server;/*** 類TestSocket.java的實現描述:*/ public class TestSocket {private Server server;private static final int port=8733;@SuppressWarnings("static-access")@Testpublic void testSocket() throws IOException,InterruptedException{//這里需要單獨起個線程來在client發送消息前啟動server的監聽程序Thread serverThread=new Thread() {@Overridepublic void run() {try{server = new Server(port);server.listen();}catch(IOException e){throw new RuntimeException(e);} } };serverThread.start();//這里通過線程不斷的睡眠來等待server的監聽程序啟動成功while(true){if(server==null||!server.isBound()){Thread.currentThread().sleep(1000);}else{break;}} Client client = new Client("127.0.0.1", port);client.send("test");client.send("joking");client.close();server.close();//獲取當前client發送的消息List<String> actualList = server.getList();List<String> expectedList = Arrays.asList("test", "joking");Assert.assertEquals(actualList, expectedList);} }

轉載于:https://www.cnblogs.com/bestchenwu/archive/2012/05/06/9655385.html

總結

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

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

主站蜘蛛池模板: 国语对白| 欧美综合在线视频 | www裸玉足久久久 | 一区二区三区四区日韩 | 精品乱子伦一区二区 | 黄色小说视频 | 99热成人| 国产一区二区免费看 | 日韩欧美一区在线观看 | 国产操片| 老司机午夜精品视频 | 国产精品理论在线观看 | 日韩成人福利 | 内射干少妇亚洲69xxx | 色婷婷av国产精品 | 欧美成人一二三区 | 丰满少妇被猛烈进入无码 | 中文字幕亚洲乱码熟女一区二区 | 在线香蕉视频 | 奇米四色777| 国产裸体永久免费无遮挡 | 国产精品无码内射 | 男女免费看 | 情欲超 | 欧美性生活一区 | 五月天激情视频在线观看 | 一本久久久久 | 秋霞成人av| 影音先锋久久久久av综合网成人 | 爆乳熟妇一区二区三区霸乳 | 国内外成人免费视频 | 黑人巨大精品欧美黑寡妇 | 日本高清视频一区二区三区 | 成年人免费毛片 | 久久久久99精品成人片直播 | 国产精品久久久久久久免费看 | 熟妇高潮一区二区 | 在线观看免费视频一区二区 | 一道本视频在线 | 国产福利小视频在线观看 | 天天干导航 | 国产黄色a | 日本后进式猛烈xx00动态图 | 性做久久久久久免费观看 | 精品国产视频一区二区 | 青草福利视频 | 天堂网一区 | 国产美女91| 欧美三级午夜理伦三级老人 | 最新视频在线观看 | 国产人妻精品久久久久野外 | 日韩国产一区二区三区 | 日韩一区免费 | 91黄色短视频 | 亚洲欧美日本在线观看 | 91黄免费 | 天天看片天天射 | 欧美夜夜操 | 一区二区视频国产 | 国产精品久久久久久免费观看 | 在线中文视频 | 草久久av| 精品夜夜澡人妻无码av | 日本少妇毛茸茸高潮 | 欧美日韩一区二区三区在线 | 亚洲精品性视频 | 九九影院最新理论片 | 中国挤奶哺乳午夜片 | 肉色欧美久久久久久久免费看 | 午夜h视频 | 四虎精品| 亚洲成av人片一区二区 | 国产最爽的乱淫视频国语对白 | 黄色录像大片 | 天天干天天狠 | 国产又粗又长又黄的视频 | 高潮久久久 | 桃色在线视频 | 国模私拍视频在线 | 歪歪视频在线观看 | 精品自拍视频在线观看 | 黄色网www | 日本性xxxxx 免费毛片视频网站 | 美女免费黄色 | 亚欧美一区二区三区 | 四虎在线影视 | 日美av| 18禁裸乳无遮挡啪啪无码免费 | 亚洲第一黄色网 | 美妇av | 日韩少妇中文字幕 | 娇妻第一次尝试交换的后果 | 天天干视频在线 | 黄色污污网站 | 国产卡一卡二 | 成人gav | 亚洲h动漫| 女人的天堂网 | 亚洲热影院|