示例一:

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. Python中函数的参数传递与可变长参数

    转自旭东的博客原文 Python中函数的参数传递与可变长参数 Python中传递参数有以下几种类型: (1)像C++一样的默认缺省函数 (2)根据参数名传参数 (3)可变长度参数 示例如下: (1)默 ...

  2. 使用HTML5画柱状图

    柱状图在很多应用中都比较常见,例如投票结果的统计分析,企业销售数据的统计分析等等.    需求分析:  一个柱状图一般包含以下几部分:  1.标题  2.横坐标(含标题)  3.竖坐标 (含标题.刻度 ...

  3. poj 1469 COURSES 题解

    COURSES Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 21515   Accepted: 8455 Descript ...

  4. HorizontalScrollView的使用演示样例

    MainActivity例如以下: package cc.cv; import android.os.Bundle; import android.view.LayoutInflater; impor ...

  5. JDBC结合JSP使用(1)

    1. 添加数据 在jsp页面中添加数据,和在serv中添加数据相似.获得页面中提交的数据以后,把数据保存到数据库表中,JSP的代码如下: add.jsp <%@ page language=&q ...

  6. 数据库实例: STOREBOOK > 表空间 > 编辑 表空间: SYSTEM

    ylbtech-Oracle:数据库实例: STOREBOOK  >  表空间  >  编辑 表空间: SYSTEM  表空间  >  编辑 表空间: SYSTEM 1. 一般信息返 ...

  7. 第二章 Javac编译原理

    注:本文主要记录自<深入分析java web技术内幕>"第四章 javac编译原理" 1.javac作用 将*.java源代码文件转化为*.class文件 2.编译流程 ...

  8. Android中XML解析-SAX解析

    昨天由于时间比较匆忙只写了Android中的XML解析的Dom方式,这种方式比较方便,很容易理解,最大的不足就是内容多的时候,会消耗内存.SAX(Simple API for XML)是一个解析速度快 ...

  9. NYOJ-712 探寻宝藏(第六届河南省程序设计大赛)

    探 寻 宝 藏 时间限制:1000 ms  |  内存限制:65535 KB 难度:5   描述 传说HMH大沙漠中有一个M*N迷宫,里面藏有许多宝物.某天,Dr.Kong找到了迷宫的地图,他发现迷宫 ...

  10. nginx rewrite only specific servername to https

    需求: 把某个域名的80端口服务  ----> 重定向转到 这个域名的 443端口的服务.   server { listen 80; server_name xxx.abcd.com.cn; ...