示例一:

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. 比較两个 List 的值是否相等

    public static <T extends Comparable<T>> boolean compare(List<T> a, List<T> b ...

  2. jsp数据库连接大全和数据库操作封装到Javabean

    一.jsp连接Oracle8/8i/9i数据库(用thin模式) testOracle.jsp如下: <%@ page contentType="text/html;charset=g ...

  3. 《3D打印:三维智能数字化创造(全彩)》

    <3D打印:三维智能数字化创造(全彩)> 基本信息 作者: 吴怀宇 出版社:电子工业出版社 ISBN:9787121220630 上架时间:2014-1-13 出版日期:2014 年1月 ...

  4. Error while loading shared libraries: libpq.so.5: cannot open shared object file: No such file or directory

    32位系统:ln -s /opt/base/3.3/lib/libpq.so.5 /usr/lib/libpq.so.5 64位系统:ln -s /opt/base/3.3/lib/libpq.so. ...

  5. [GIt] 团队工作效率分析工具gitstats

    copy : http://www.cnblogs.com/ToDoToTry/p/4311637.html 如果你是团队领导,关心团队的开发效率和工作激情:如果你是开源软件开发者,维护者某个repo ...

  6. C语言运算符优先级及结合性

    今天去翻了下C语言运算符的优先级和结合性,发现当初学习的时候就没认真记住,惭愧.发现一篇讲得不错的文章,编辑了下转来供以后翻阅. C语言运算符优先级表(由上至下,优先级依次递减) 运算符 结合性 () ...

  7. Linux命令缩写来由

    A 命令 全称 功能 备注 apt AdvancedPackaging Tool APT用来自动下载,配置,安装二进制或者源代码格式的软件包   awk Aho Weiberger and Kerni ...

  8. 简单使用CSS3实现炫酷读者墙效果

    读者墙,在很多网站上都有,没有遇到过的,可以参考度娘:读者墙http://www.baidu.com/s?wd=%B6%C1%D5%DF%C7%BD 使用基础的Html和CSS写出雏形 需要一提的是头 ...

  9. UVA 11464 Even Parity (独特思路)

    题意:有一个n*n的01矩阵,任务是把尽可能少的0变成1,使得每个元素的上.下.左.右元素之和为偶数. 思路:很容易想到的思路是枚举每个点是0还是1,因为n<=15,复杂度就是2^225显然TL ...

  10. 使用Zxing开发Air版二维码扫描工具

    简介实现的核心要点和几个须要注意的问题: 使用开源类库:Zxing,微信也是用的这个.下载地址:http://code.google.com/p/zxing/ as版:https://github.c ...