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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

java Socket Tcp示例三则(服务端处理数据、上传文件)

發布時間:2024/4/17 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java Socket Tcp示例三则(服务端处理数据、上传文件) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

示例一:

package cn.itcast.net.p5.tcptest;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;

public class TransClient {

?/**
? * @param args
? * @throws IOException
? * @throws UnknownHostException
? */
?public static void main(String[] args) throws UnknownHostException, IOException {

??/*
?? * 思路:
?? * 客戶端:
?? * 1,需要先有socket端點。
?? * 2,客戶端的數據源:鍵盤。
?? * 3,客戶端的目的:socket.
?? * 4,接收服務端的數據,源:socket。
?? * 5,將數據顯示在打印出來:目的:控制臺.
?? * 6,在這些流中操作的數據,都是文本數據。
?? *
?? *
?? * 轉換客戶端:
?? * 1,創建socket客戶端對象。
?? * 2,獲取鍵盤錄入。
?? * 3,將錄入的信息發送給socket輸出流。
?? */
??
??//1,創建socket客戶端對象。
??Socket s = new Socket("192.168.1.100",10004);
??
??//2,獲取鍵盤錄入。
??BufferedReader bufr? =
????new BufferedReader(new InputStreamReader(System.in));
??
??//3,socket輸出流。
//??new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
??PrintWriter out = new PrintWriter(s.getOutputStream(),true);
??
??
??//4,socket輸入流,讀取服務端返回的大寫數據
??BufferedReader bufIn? = new BufferedReader(new InputStreamReader(s.getInputStream()));
??
??String line = null;
??
??while((line=bufr.readLine())!=null){
???
???if("over".equals(line))
????break;
???
//???out.print(line+"\r\n");
//???out.flush();
???out.println(line);
???
???//讀取服務端發回的一行大寫數。
???String upperStr = bufIn.readLine();
???System.out.println(upperStr);
??}
??
??s.close();
??
?}

}

?

?

package cn.itcast.net.p5.tcptest;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;

public class TransServer {

?/**
? * @param args
? * @throws IOException
? */
?public static void main(String[] args) throws IOException {

??/*
?? *
?? * 轉換服務端。
?? * 分析:
?? * 1,serversocket服務。
?? * 2,獲取socket對象。
?? * 3,源:socket,讀取客戶端發過來的需要轉換的數據。
?? * 4,目的:顯示在控制臺上。
?? * 5,將數據轉成大寫發給客戶端。
?? */
??
??//1,
??ServerSocket ss = new ServerSocket(10004);
??
??//2,獲取socket對象。
??Socket s = ss.accept();
??
??//獲取ip.
??String ip = s.getInetAddress().getHostAddress();
??System.out.println(ip+"......connected");
??
??//3,獲取socket讀取流,并裝飾。
??BufferedReader bufIn = new BufferedReader(new InputStreamReader(s.getInputStream()));
??
??//4,獲取socket的輸出流,并裝飾。
??PrintWriter out = new PrintWriter(s.getOutputStream(),true);
??
??String line = null;
??while((line=bufIn.readLine())!=null){
???
???System.out.println(line);
???out.println(line.toUpperCase());
//???out.print(line.toUpperCase()+"\r\n");
//???out.flush();
??}
??
??s.close();
??ss.close();
??
?}

}

?

?

示例二:

package cn.itcast.net.p6.uploadtext;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;

public class UploadClient {

?/**
? * @param args
? * @throws IOException
? * @throws UnknownHostException
? */
?public static void main(String[] args) throws UnknownHostException, IOException {

??System.out.println("上傳客戶端。。。。。。");
??
??File file = new File("c:\\client.txt");
??System.out.println(file.exists());
??
??
??//1
??Socket s = new Socket("192.168.1.100",10005);
??
??//2
??BufferedReader bufr =
????new BufferedReader(new FileReader(file));
??
??//3,
??PrintWriter out = new PrintWriter(s.getOutputStream(),true);
??
??
??String line = null;
??while((line=bufr.readLine())!=null){
???
???out.println(line);
??}
??
??//告訴服務端,客戶端寫完了。
??s.shutdownOutput();
//??out.println("!@#$%^&*(");
??
??//4,
??BufferedReader bufIn = new BufferedReader(new InputStreamReader(s.getInputStream()));
??
??String str = bufIn.readLine();
??System.out.println(str);
??
??bufr.close();
??s.close();
??
?}

}

?

?

package cn.itcast.net.p6.uploadtext;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;

public class UploadServer {

?/**
? * @param args
? * @throws IOException
? */
?public static void main(String[] args) throws IOException {
??System.out.println("上傳服務端。。。。。。。。。");
??
??//1
??ServerSocket ss = new ServerSocket(10005);
??
??//2,
??Socket s = ss.accept();
??
??System.out.println(s.getInetAddress().getHostAddress()+".....connected");
??
??//3,
??BufferedReader bufIn = new BufferedReader(new InputStreamReader(s.getInputStream()));
??
??//4,
??BufferedWriter bufw = new BufferedWriter(new FileWriter("c:\\server.txt"));
??
??String line = null;
??
??while((line=bufIn.readLine())!=null){
???
//???if("over".equals(line))
//????break;
???bufw.write(line);
???bufw.newLine();
???bufw.flush();
??}
??
??
??PrintWriter out = new PrintWriter(s.getOutputStream(),true);
??out.println("上傳成功");
??
??bufw.close();
??
??s.close();
??ss.close();
??
??
?}

}

?

示例三:

package cn.itcast.net.p1.uploadpic;

import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;

public class UploadPicClient {

?/**
? * @param args
? * @throws IOException
? * @throws UnknownHostException
? */
?public static void main(String[] args) throws UnknownHostException, IOException {

??
??//1,創建客戶端socket。
??Socket s = new Socket("192.168.1.100",10006);
??
??//2,讀取客戶端要上傳的圖片文件。
??FileInputStream fis = new FileInputStream("c:\\0.bmp");
??
??//3,獲取socket輸出流,將讀到圖片數據發送給服務端。
??OutputStream out = s.getOutputStream();
??
??byte[] buf = new byte[1024];
??
??int len = 0;
??
??while((len=fis.read(buf))!=-1){
???out.write(buf,0,len);
??}
??
??//告訴服務端說:這邊的數據發送完畢。讓服務端停止讀取。
??s.shutdownOutput();
??
??
??//讀取服務端發回的內容。 ??
??InputStream in? = s.getInputStream();
??byte[] bufIn = new byte[1024];
??
??int lenIn = in.read(buf);
??String text = new String(buf,0,lenIn);
??System.out.println(text);
??
??fis.close();
??s.close();
??
??
??
??
?}

}

?

package cn.itcast.net.p1.uploadpic;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class UploadPicServer {

?/**
? * @param args
? * @throws IOException
? */
?public static void main(String[] args) throws IOException {
???
??//創建tcp的socket服務端。
??ServerSocket ss = new ServerSocket(10006);
??
??while(true){
???Socket s = ss.accept();???
???
???new Thread(new UploadTask(s)).start();??
???
??}
??//獲取客戶端。
??
??
//??ss.close();
??
??
?}

}

?

package cn.itcast.net.p1.uploadpic;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;

public class UploadTask implements Runnable {

?private static final int SIZE = 1024*1024*2;
?private Socket s;

?public? UploadTask(Socket s) {
??this.s = s;
?}

?@Override
?public void run() {

??int count = 0;
??String ip = s.getInetAddress().getHostAddress();
??System.out.println(ip + ".....connected");
??
??try{

??// 讀取客戶端發來的數據。
??InputStream in = s.getInputStream();

??// 將讀取到數據存儲到一個文件中。
??File dir = new File("c:\\pic");
??if (!dir.exists()) {
???dir.mkdirs();
??}
??File file = new File(dir, ip + ".jpg");
??//如果文件已經存在于服務端
??while(file.exists()){
???file = new File(dir,ip+"("+(++count)+").jpg");
??}
??
??
??FileOutputStream fos = new FileOutputStream(file);

??byte[] buf = new byte[1024];

??int len = 0;

??while ((len = in.read(buf)) != -1) {
???
???
???
???fos.write(buf, 0, len);
???
???if(file.length()>SIZE){
????System.out.println(ip+"文件體積過大");
????
????fos.close();
????s.close();
????
????
????System.out.println(ip+"...."+file.delete());
????
????return ;
???}
??}

??// 獲取socket輸出流,將上傳成功字樣發給客戶端。
??OutputStream out = s.getOutputStream();
??out.write("上傳成功".getBytes());

??fos.close();
??s.close();
??}catch(IOException e){
???
??}

?}

}

轉載于:https://www.cnblogs.com/flying607/p/3442954.html

總結

以上是生活随笔為你收集整理的java Socket Tcp示例三则(服务端处理数据、上传文件)的全部內容,希望文章能夠幫你解決所遇到的問題。

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