Java網(wǎng)絡(luò)編程之TCP程序設(shè)計
本文實例為大家分享了Java網(wǎng)絡(luò)編程TCP程序設(shè)計的具體代碼,供大家參考,具體內(nèi)容如下
[1] TCP編程的主要步驟
客戶端(client):
1.創(chuàng)建Socket對象,構(gòu)造方法的形參列表中需要InetAddress類對象和int型值,用來指明對方的IP地址和端口號。
2.通過Socket對象的getOutputStream()方法返回OutputStream抽象類子類的一個對象,用來發(fā)送輸出流。
3.通過輸出流的write方法輸出具體的信息。
4.關(guān)閉相應(yīng)的流和Socket對象。
服務(wù)端(server):
1.創(chuàng)建ServerSocket類的對象,在構(gòu)造器中指明端口號。
2.調(diào)用ServerSocket類對象的accept()方法,返回一個Socket類的實例。
3.通過Socket實例的getInputStream()方法獲取一個輸入流,用來接收來自客戶端的信息。
4.利用輸入流接收數(shù)據(jù),并處理數(shù)據(jù)。
5.關(guān)閉相應(yīng)的流、Socket對象、ServerSocket對象。
[2] Java源程序 ( 注意:在測試時先開啟服務(wù)端方法server(),再開啟客戶端方法client() )
package pack01;
import java.io.*;
import java.net.*;
import org.junit.Test;
public class TestNet1 {
@Test //***********************客戶端測試方法***********************
public void client() {
Socket socket = null; //建立客戶端網(wǎng)絡(luò)套接字
OutputStream socket_os = null; //客戶端輸出流
try {
//1.獲取本機環(huán)路地址
InetAddress inet = InetAddress.getByName("127.0.0.1");
//2.創(chuàng)建Socket對象
socket = new Socket(inet, 10000);
//3.獲取輸出流
socket_os = socket.getOutputStream();
//4.客戶端輸出信息
socket_os.write( "客戶端發(fā)送信息".getBytes() );
} catch (IOException e) {
e.printStackTrace();
} finally {
try { //關(guān)閉輸出流
socket_os.close();
} catch (IOException e) {
e.printStackTrace();
}
try { //關(guān)閉客戶端套接字
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
@Test //***********************服務(wù)端測試方法***********************
public void server() {
ServerSocket serSocket = null;
Socket socket = null;
InputStream socket_is = null;
try {
serSocket = new ServerSocket(10000);
socket = serSocket.accept(); //獲取服務(wù)端套接字
socket_is = socket.getInputStream(); //獲取輸入流
byte[] b = new byte[100]; //用于接收信息的字節(jié)數(shù)組
int len;
StringBuffer sb = new StringBuffer();
while( (len = socket_is.read(b)) != -1 ) {
sb.append( new String(b,0,len) ); //將字節(jié)信息連續(xù)保存在buffer數(shù)組里
}
System.out.println("來自" + socket.getInetAddress().getHostName() + "的信息:");
System.out.println( sb );
} catch (IOException e) {
e.printStackTrace();
} finally {
try { //關(guān)閉輸入流
socket_is.close();
} catch (IOException e) {
e.printStackTrace();
}
try { //關(guān)閉Socket對象
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
try { //關(guān)閉ServerSocket對象
serSocket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Java 程序設(shè)計總復(fù)習(xí)題(java基礎(chǔ)代碼)
- Java Swing程序設(shè)計實戰(zhàn)
- Java面向?qū)ο蟪绦蛟O(shè)計:類的定義,靜態(tài)變量,成員變量,構(gòu)造函數(shù),封裝與私有,this概念與用法詳解
- Java面向?qū)ο蟪绦蛟O(shè)計:繼承,多態(tài)用法實例分析
- Java面向?qū)ο蟪绦蛟O(shè)計:抽象類,接口用法實例分析
- java程序設(shè)計語言的優(yōu)勢及特點
- java門禁系統(tǒng)面向?qū)ο蟪绦蛟O(shè)計
- Java面向?qū)ο蟪绦蛟O(shè)計多態(tài)性示例
- Android中通過RxJava進(jìn)行響應(yīng)式程序設(shè)計的入門指南
- Java程序設(shè)計之12個經(jīng)典樣例
相關(guān)文章
SpringBoot項目整合jasypt實現(xiàn)過程詳解
這篇文章主要介紹了SpringBoot項目整合jasypt實現(xiàn)過程詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-08-08
Java?Stream對象并行處理方法parallel()代碼示例
在Java中Stream是一種用于處理集合數(shù)據(jù)的流式操作API,它提供了一種簡潔、靈活、高效的方式來對集合進(jìn)行各種操作,下面這篇文章主要給大家介紹了關(guān)于Java?Stream對象并行處理方法parallel()的相關(guān)資料,需要的朋友可以參考下2023-11-11
EasyExcel實現(xiàn)讀取excel中的日期單元格并自動判定終止讀取
這篇文章主要為大家詳細(xì)介紹了EasyExcel如何實現(xiàn)讀取excel中的日期單元格并自動判定終止讀取,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-11-11
JDK20?+?SpringBoot?3.1.0?+?JdbcTemplate?使用案例詳解
通過 JdbcTemplate 直接執(zhí)行 SQL 語句,結(jié)合源碼動態(tài)編譯即可方便實現(xiàn)動態(tài)修改代碼邏輯的效果,這篇文章主要介紹了JDK20?+?SpringBoot?3.1.0?+?JdbcTemplate?使用,需要的朋友可以參考下2023-09-09
idea中啟動項目彈出 IDEA out of memory窗口的解決方案
這篇文章主要介紹了idea中啟動項目彈出 IDEA out of memory窗口的解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-01-01
java實現(xiàn)微信公眾平臺自定義菜單的創(chuàng)建示例
這篇文章主要介紹了java實現(xiàn)微信公眾平臺自定義菜單的創(chuàng)建示例,需要的朋友可以參考下2014-04-04

