示例一:

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){
   
  }

}

}

java Socket Tcp示例三则(服务端处理数据、上传文件)的更多相关文章

  1. Android端通过HttpURLConnection上传文件到服务器

    Android端通过HttpURLConnection上传文件到服务器 一:实现原理 最近在做Android客户端的应用开发,涉及到要把图片上传到后台服务器中,自己选择了做Spring3 MVC HT ...

  2. Android端通过HttpURLConnection上传文件到server

    Android端通过HttpURLConnection上传文件到server 一:实现原理 近期在做Androidclient的应用开发,涉及到要把图片上传到后台server中.自己选择了做Sprin ...

  3. 实验09——java基于TCP实现客户端与服务端通信

    TCP通信         需要先创建连接 - 并且在创建连接的过程中 需要经过三次握手        底层通过 流 发送数据 数据没有大小限制        可靠的传输机制 - 丢包重发 包的顺序的 ...

  4. ASP.NET MVC在服务端把异步上传的图片裁剪成不同尺寸分别保存,并设置上传目录的尺寸限制

    我曾经试过使用JSAjaxFileUploader插件来把文件.照片以异步的方式上传,就像"MVC文件图片ajax上传轻量级解决方案,使用客户端JSAjaxFileUploader插件01- ...

  5. 【温故知新】Java web 开发(三)Form表单与上传下载文件

    简介:在一和二的基础之上,这次来记录下如何在页面提交表单数据,以及文件的上传和下载整个流程,请求也不仅限于GET了,也有POST了. 1. 为了方便,在 webapp 下直接新建一个 index.ht ...

  6. 那些年的 网络通信之 TCP/IP 传输控制协议 ip 加 端口 客户端上传文件到服务器端服务器端返回上传成功消息

    多线程开启, 客户端通过 Socket 流 上传文件到服务端的一个小程序练习. 1. 抓住阻塞式方法,去调试 2. 获取对应流对象操作对应的对象 这时候自己不能懵,一定要清晰,最好命名就能区别,一搞混 ...

  7. Springboot第三篇:与前端fetch通信(关于前端传输json数据上传文件等等前后端的处理)

    关于前端接口传递的方法,推荐按以下使用: 若要在服务器上创建资源,推荐使用POST方法 若要检索某个资源,推荐使用GET方法 若要更新资源,推荐使用PUT方法 若要删除某个资源,推荐使用DELETE方 ...

  8. java Socket通信,客户端与服务端相互发消息

    1.通信过程 网络分为应用层,http.ssh.telnet就是属于这一类,建立在传输层的基础上.其实就是定义了各自的编码解码格式,分层如下: 2.Socket连接 上述通信都要先在传输层有建立连接的 ...

  9. CentOS 使用SMB服务 让windows能够上传文件

    1. 新增加用户 useradd zhaobsh 2. 使用 pdbedit的方式新增加用户 pdbedit -a -u zhaobsh 3. 修改smb服务 systemctl restart sm ...

随机推荐

  1. Latex Error cannot determine the size of graphic 报错的解决的方法

    Latex Error cannot determine the size of graphic 报错的解决的方法 插入jpg文件老是会报错... 追究了半天,原来是编译的命令又问题,不应该使用 la ...

  2. jvm执行流程

    首先给一个简单的Java示例,源代码如下: public class Main { private static int size=1; public static void main(String  ...

  3. Arcgis Runtime for andriod 100 Simple marker symbol

    GraphicsOverlay graphicsOverlay = new GraphicsOverlay(); 58 mMapView.getGraphicsOverlays().add(graph ...

  4. Ext.Toolbar.Fill()

    tbar : ['-',new Ext.form.Label({ text : '产品代码:' }),new Ext.form.TextField({ id : 'cpdm', name : 'cpd ...

  5. Asp.Net中自以为是的Encode

    Asp.Net 引擎可能是不错,但是它把程序员想的太笨,会自以为是做很多自动的 Encode 和 Decode,以下文举例: 如果客户端我们 post 了如下的数据, 但是你实际得到的是: 也就是说, ...

  6. 15、高可用 PXC(percona xtradb cluster) 搭建

    安装环境: 集群名 pxc_lk 节点1: 192.168.1.20 节点2: 192.168.1.21 节点3: 192.168.1.22   所有节点安装 wget http://www.perc ...

  7. Java输入输出处理技术2

    7.从键盘输入 从键盘输入一行字符,并显示到屏幕上. package io; import java.io.*; public class ReadAndWrite { public static v ...

  8. Best Time to Buy and Sell Stock III leetcode java

    题目: Say you have an array for which the ith element is the price of a given stock on day i. Design a ...

  9. Oracle查询client编码集

    Oracle查询client编码集 SQL> select userenv('language') from dual; USERENV('LANGUAGE') ---------------- ...

  10. 【图解】javaScript组成结构