一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專(zhuān)注于服務(wù)器技術(shù)及軟件下載分享
分類(lèi)導(dǎo)航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務(wù)器之家 - 編程語(yǔ)言 - JAVA教程 - Java基于Tcp協(xié)議的socket編程實(shí)例

Java基于Tcp協(xié)議的socket編程實(shí)例

2019-12-07 15:53shichen2014 JAVA教程

這篇文章主要介紹了Java基于Tcp協(xié)議的socket編程實(shí)例,較為詳細(xì)的分析了socket編程客戶端與服務(wù)器端的具體實(shí)現(xiàn)步驟與使用技巧,具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

本文實(shí)例講述了Java基于Tcp協(xié)議的socket編程方法,分享給大家供大家參考。具體分析如下:

以下是一對(duì)一的通信編程實(shí)現(xiàn),后續(xù)會(huì)繼續(xù)學(xué)習(xí)一個(gè)服務(wù)器監(jiān)聽(tīng)多個(gè)客戶端的實(shí)現(xiàn)。

這里用到的主要步驟如下:

第一步:以特定端口(如4800)新建socket對(duì)象
第二步:以系統(tǒng)輸入設(shè)備構(gòu)造BufferedReader對(duì)象,該對(duì)象用于接收系統(tǒng)鍵盤(pán)輸入的字符
第三步:以socket對(duì)象 得到輸出流來(lái)構(gòu)造PrintWriter
第四步:以socket對(duì)象得到輸入流來(lái)構(gòu)造相應(yīng)的BufferedReader對(duì)象,該對(duì)象用于接收server端發(fā)送過(guò)來(lái)的信息

我理解到的關(guān)閉socket:先開(kāi)的后關(guān)閉,socket最后關(guān)閉。

以下是客戶端的代碼實(shí)現(xiàn):

復(fù)制代碼代碼如下:

package com.fan.socket;

 

import java.io.*;
import java.net.Socket;

public class SocketClient {
public static void main(String[] args) throws IOException{

try{
Socket socket=new Socket("127.0.0.1",4800);
System.out.println("client start ...");
//向本機(jī)的4800端口發(fā)出客戶請(qǐng)求
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
//由系統(tǒng)標(biāo)準(zhǔn)輸入設(shè)備構(gòu)造BufferedReader對(duì)象
PrintWriter write=new PrintWriter(socket.getOutputStream());
//由Socket對(duì)象得到輸出流,并構(gòu)造PrintWriter對(duì)象
BufferedReader in=new BufferedReader(new InputStreamReader(socket.getInputStream()));
//由Socket對(duì)象得到輸入流,并構(gòu)造相應(yīng)的BufferedReader對(duì)象
String readline;
readline=br.readLine(); //從系統(tǒng)標(biāo)準(zhǔn)輸入讀入一字符串
while(!readline.equals("end")){
//若從標(biāo)準(zhǔn)輸入讀入的字符串為 "end"則停止循環(huán)
write.println(readline);
//將從系統(tǒng)標(biāo)準(zhǔn)輸入讀入的字符串輸出到Server2
write.flush();
//刷新輸出流,使Server馬上收到該字符串
System.out.println("Client:"+readline);
//在系統(tǒng)標(biāo)準(zhǔn)輸出上打印讀入的字符串
System.out.println("Server:"+in.readLine());
//從Server讀入一字符串,并打印到標(biāo)準(zhǔn)輸出上
readline=br.readLine(); //從系統(tǒng)標(biāo)準(zhǔn)輸入讀入一字符串
} //繼續(xù)循環(huán)
write.close(); //關(guān)閉Socket輸出流
in.close(); //關(guān)閉Socket輸入流 
socket.close(); //關(guān)閉Socket 
}catch(Exception e) {
System.out.println("can not listen to:"+e);//出錯(cuò),打印出錯(cuò)信息
}
}

}

 

服務(wù)端代碼實(shí)現(xiàn):

復(fù)制代碼代碼如下:

package com.fan.socket;

 

import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;

public class SocketService {
public static void main(String[] args) throws IOException{
SocketService socketService = new SocketService();
socketService.oneServer();
}

public void oneServer(){
try{
ServerSocket server=null;
try{
server=new ServerSocket(4800);
System.out.println("server start is ok...");
//創(chuàng)建一個(gè)ServerSocket在端口4800監(jiān)聽(tīng)客戶請(qǐng)求
}catch(Exception e) {
System.out.println("can not listen to:"+e);
//出錯(cuò),打印出錯(cuò)信息
}
Socket socket=null;
try{
socket=server.accept();
//使用accept()阻塞等待客戶請(qǐng)求,有客戶
//請(qǐng)求到來(lái)則產(chǎn)生一個(gè)Socket對(duì)象,并繼續(xù)執(zhí)行
}catch(Exception e) {
System.out.println("Error."+e);
//出錯(cuò),打印出錯(cuò)信息
}
String line;
BufferedReader in=new BufferedReader(new InputStreamReader(socket.getInputStream()));
//由Socket對(duì)象得到輸入流,并構(gòu)造相應(yīng)的BufferedReader對(duì)象
PrintWriter writer=new PrintWriter(socket.getOutputStream());
//由Socket對(duì)象得到輸出流,并構(gòu)造PrintWriter對(duì)象
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
//由系統(tǒng)標(biāo)準(zhǔn)輸入設(shè)備構(gòu)造BufferedReader對(duì)象
System.out.println("Client:"+in.readLine());
//在標(biāo)準(zhǔn)輸出上打印從客戶端讀入的字符串
line=br.readLine();
//從標(biāo)準(zhǔn)輸入讀入一字符串
while(!line.equals("end")){
//如果該字符串為 "bye",則停止循環(huán)
writer.println(line);
//向客戶端輸出該字符串
writer.flush();
//刷新輸出流,使Client馬上收到該字符串
System.out.println("Server:"+line);
//在系統(tǒng)標(biāo)準(zhǔn)輸出上打印讀入的字符串
System.out.println("Client:"+in.readLine());
//從Client讀入一字符串,并打印到標(biāo)準(zhǔn)輸出上
line=br.readLine();
//從系統(tǒng)標(biāo)準(zhǔn)輸入讀入一字符串
} //繼續(xù)循環(huán)
writer.close(); //關(guān)閉Socket輸出流
in.close(); //關(guān)閉Socket輸入流
socket.close(); //關(guān)閉Socket
server.close(); //關(guān)閉ServerSocket
}catch(Exception e) {//出錯(cuò),打印出錯(cuò)信息
System.out.println("Error."+e);
}
}
}

 

希望本文所述對(duì)大家的Java程序設(shè)計(jì)有所幫助。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 我要看靠逼片 | 欧美日韩亚洲国内综合网俺 | 青青草亚洲 | 欧美女孩13一14v | 超级乱淫寡妇 | 精品无人区麻豆乱码无限制 | 日本xxxⅹ69xxxx护士 | 亚洲AV无码国产精品色在线看 | 兽操人| 无限好资源免费观看 | 99久久免费国内精品 | 国产亚洲精品精品国产亚洲综合 | 国产精品一区二区三区免费 | 欧美摸胸 | 白丝校花好湿好紧 | 亚洲狠狠综合久久 | 日本xxxxx高清免费观看 | 欧美黑人性| 欧美日韩国产亚洲一区二区 | 国产成人cao在线 | 欧美一级免费看 | 精品小视频在线 | 亚洲国产精品综合欧美 | 免费视频亚洲 | 摸进老太婆的裤裆小说 | chinese男男gay| 男人边吃奶边做好爽视频免费 | 亚洲国产一区二区三区a毛片 | 奇米影视在线视频 | 草草草视频在线观看 | 国内在线播放 | 99久9在线视频 | 国产成人啪精品午夜在线观看 | 91精品国产亚一区二区三区 | 任我鲁精品视频精品 | 国产亚洲精品自在线亚洲情侣 | 青青青视频免费线看 视频 青青青青青国产免费手机看视频 | 99视频在线看 | 国产日韩免费视频 | 无限观看社区在线视频 | 欧美视频一区二区三区在线观看 |