java TCP入門程式設計(檔案傳送、服務端接收多個客戶端請求)
檔案傳送
服務端 FileServer
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class FileServer {
public static void main(String[] args) throws IOException {
ServerSocket serverSocket=new ServerSocket(10086);
Socket accept = serverSocket.accept();
System.out.println("建立連線");
InputStream inputStream = accept.getInputStream();
FileOutputStream fileOutputStream=new FileOutputStream("D:\\Test\\hello.txt");
byte[] bytes=new byte[1024*4];
int count=0;
while ((count=inputStream.read(bytes))!=-1){
fileOutputStream.write(bytes,0,count);
}
fileOutputStream.close();
inputStream.close();
accept.close();
serverSocket.close();
System.out.println("接收完成");
}
}
客戶端 FileClient
import java.io.FileInputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.net.Socket;
public class FileClient {
public static void main(String[] args) throws IOException {
Socket socket=new Socket("192.168.182.1",10086);
OutputStream outputStream = socket.getOutputStream();
FileInputStream fileInputStream=new FileInputStream("D:\\Test\\init.txt");
byte[] bytes=new byte[1024*4];
int count=0;
while ((count=fileInputStream.read(bytes))!=-1){
outputStream.write(bytes,0,count);
}
fileInputStream.close();
outputStream.close();
socket.close();
System.out.println("傳送完畢");
}
}
測試:通過測試可以實現檔案的傳送。
服務端接收多個客戶端請求
服務端 ChatServerSocket
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
public class ChatServerSocket {
public static void main(String[] args) throws IOException {
ServerSocket serverSocket=new ServerSocket(10086);
while (true){
//如果沒有客戶請求,則阻塞
Socket accept = serverSocket.accept();
System.out.println("客戶:"+accept.getInetAddress()+" 進來了");
//當獲取到客戶端的連線時就會往下走,開啟一個執行緒用來接收資料
new Thread(new Runnable() {
@Override
public void run() {
InputStream inputStream = null;
try {
inputStream = accept.getInputStream();
BufferedReader bufferedReader=new BufferedReader(new InputStreamReader(inputStream,"utf-8"));
while(true){//一直接收客戶端資料
String readLine = bufferedReader.readLine();
if(readLine==null||readLine.equals("0")){ //退出迴圈
break;
}
System.out.println("客戶:"+accept.getInetAddress()+"說:"+readLine);
}
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
inputStream.close();
accept.close();
System.out.println("客戶"+accept.getInetAddress()+":退出了");
} catch (IOException e) {
e.printStackTrace();
}
}
}
}).start();
}
}
}
客戶端 ChatClientSocket
import java.io.*;
import java.net.Socket;
import java.util.Scanner;
public class ChatClientSocket {
public static void main(String[] args) throws IOException {
Socket socket=new Socket("192.168.182.1",10086);
OutputStream outputStream = socket.getOutputStream();
BufferedWriter bufferedWriter=new BufferedWriter(new OutputStreamWriter(outputStream,"utf-8"));
Scanner scanner=new Scanner(System.in);
while (true){
String next = scanner.next();
bufferedWriter.write(next);
bufferedWriter.newLine();
bufferedWriter.flush();
if(next.equals("0")){
break;
}
}
bufferedWriter.close();
socket.close();
}
}
測試,我們將客戶端分別在本機與虛擬機器上開啟進行測試:
幫助到您請點贊關注收藏謝謝!!!
相關文章
- TCP程式設計之服務端和客戶端的開發TCP程式設計服務端客戶端
- PHP-Socket服務端客戶端傳送接收通訊例項詳解PHP服務端客戶端
- golang實現tcp客戶端服務端程式GolangTCP客戶端服務端
- 服務端如何獲取客戶端請求IP地址服務端客戶端
- TCP/UDP簡易通訊框架原始碼,支援輕鬆管理多個TCP服務端(客戶端)、UDP客戶端TCPUDP框架原始碼服務端客戶端
- 001 Rust 網路程式設計,實現 TCP 服務端和客戶端程式Rust程式設計TCP服務端客戶端
- 從客戶端向服務端發起請求(3種)客戶端服務端
- Python 網路程式設計-TCP服務端基礎篇(一)簡單的傳送和接收Python程式設計TCP服務端
- python建立tcp服務端和客戶端PythonTCP服務端客戶端
- windows socket簡單使用--實現客戶端連結服務端併傳送和接收資料Windows客戶端服務端
- Android 客戶端與PC服務端socket通訊接收與傳送圖片(終結者)Android客戶端服務端
- 前端傳送的請求,是如何請求到後端服務的?前端後端
- Qt實現基於多執行緒的檔案傳輸(服務端,客戶端)QT執行緒服務端客戶端
- 客戶端,服務端客戶端服務端
- 服務端,客戶端服務端客戶端
- Java後端請求想接收多個物件入參的資料方法Java後端物件
- SpringBoot系列之服務端解析客戶端國際化請求Spring Boot服務端客戶端
- jmeter 傳送 UDP 請求,怎麼接收伺服器返回的 TCP 服務資料JMeterUDP伺服器TCP
- Linux socket程式設計學習初步(3)--客戶端向伺服器請求檔案Linux程式設計客戶端伺服器
- 檔案下載之斷點續傳(客戶端與服務端的實現)斷點客戶端服務端
- 基於c語言的TCP客戶端、服務端基礎程式碼C語言TCP客戶端服務端
- Java入門:TCP協議傳送/接收資料實現JavaTCP協議
- 使用多種客戶端消費WCF RestFul服務(一)——服務端客戶端REST服務端
- Rest Post示例(java服務端、python客戶端)RESTJava服務端Python客戶端
- nginx截獲客戶端請求Nginx客戶端
- Java OAuth 2.0 客戶端程式設計(二): 客戶端憑據授權JavaOAuth客戶端程式設計
- HttpSendRequest向服務端傳送資料,構造請求http頭HTTP服務端
- android客戶端向伺服器傳送請求中文亂碼的問Android客戶端伺服器
- socket實現服務端多執行緒,客戶端重複輸入服務端執行緒客戶端
- Netty入門系列(1) --使用Netty搭建服務端和客戶端Netty服務端客戶端
- 模板,從服務端到客戶端服務端客戶端
- 服務端渲染和客戶端渲染服務端客戶端
- TCP協議服務端和客戶端的連線與通訊TCP協議服務端客戶端
- 服務端和客戶端 RESTful 介面上傳 Excel 的 Python 程式碼服務端客戶端RESTExcelPython
- java Socket Tcp示例三則(服務端處理資料、上傳檔案)JavaTCP服務端
- HttpSendRequest向服務端傳送資料,構造請求http頭薦HTTP服務端
- websocket(多個客戶端)Web客戶端
- TCP通訊客戶端和服務端簡單程式碼實現TCP客戶端服務端