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端點(diǎn)。
?? * 2,客戶端的數(shù)據(jù)源:鍵盤。
?? * 3,客戶端的目的:socket.
?? * 4,接收服務(wù)端的數(shù)據(jù),源:socket。
?? * 5,將數(shù)據(jù)顯示在打印出來:目的:控制臺(tái).
?? * 6,在這些流中操作的數(shù)據(jù),都是文本數(shù)據(jù)。
?? *
?? *
?? * 轉(zhuǎn)換客戶端:
?? * 1,創(chuàng)建socket客戶端對象。
?? * 2,獲取鍵盤錄入。
?? * 3,將錄入的信息發(fā)送給socket輸出流。
?? */
??
??//1,創(chuàng)建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輸入流,讀取服務(wù)端返回的大寫數(shù)據(jù)
??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);
???
???//讀取服務(wù)端發(fā)回的一行大寫數(shù)。
???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 {
??/*
?? *
?? * 轉(zhuǎn)換服務(wù)端。
?? * 分析:
?? * 1,serversocket服務(wù)。
?? * 2,獲取socket對象。
?? * 3,源:socket,讀取客戶端發(fā)過來的需要轉(zhuǎn)換的數(shù)據(jù)。
?? * 4,目的:顯示在控制臺(tái)上。
?? * 5,將數(shù)據(jù)轉(zhuǎn)成大寫發(fā)給客戶端。
?? */
??
??//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);
??}
??
??//告訴服務(wù)端,客戶端寫完了。
??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("上傳服務(wù)端。。。。。。。。。");
??
??//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,創(chuàng)建客戶端socket。
??Socket s = new Socket("192.168.1.100",10006);
??
??//2,讀取客戶端要上傳的圖片文件。
??FileInputStream fis = new FileInputStream("c:\\0.bmp");
??
??//3,獲取socket輸出流,將讀到圖片數(shù)據(jù)發(fā)送給服務(wù)端。
??OutputStream out = s.getOutputStream();
??
??byte[] buf = new byte[1024];
??
??int len = 0;
??
??while((len=fis.read(buf))!=-1){
???out.write(buf,0,len);
??}
??
??//告訴服務(wù)端說:這邊的數(shù)據(jù)發(fā)送完畢。讓服務(wù)端停止讀取。
??s.shutdownOutput();
??
??
??//讀取服務(wù)端發(fā)回的內(nèi)容。 ??
??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 {
???
??//創(chuàng)建tcp的socket服務(wù)端。
??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{
??// 讀取客戶端發(fā)來的數(shù)據(jù)。
??InputStream in = s.getInputStream();
??// 將讀取到數(shù)據(jù)存儲(chǔ)到一個(gè)文件中。
??File dir = new File("c:\\pic");
??if (!dir.exists()) {
???dir.mkdirs();
??}
??File file = new File(dir, ip + ".jpg");
??//如果文件已經(jīng)存在于服務(wù)端
??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輸出流,將上傳成功字樣發(fā)給客戶端。
??OutputStream out = s.getOutputStream();
??out.write("上傳成功".getBytes());
??fos.close();
??s.close();
??}catch(IOException e){
???
??}
?}
}
轉(zhuǎn)載于:https://www.cnblogs.com/flying607/p/3442954.html
總結(jié)
以上是生活随笔為你收集整理的java Socket Tcp示例三则(服务端处理数据、上传文件)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Altera之VIP TPG学习笔记
- 下一篇: JButton 做图片框