使用的类
    ServerSocket 服务器端
    
    构造方法:ServerSocket(端口号); 接收端使用
    方法:accept(); 返回一个 Socket对象
    getInetAddress();返回发送端的地址 InetAddress对象

Socket 客户端 发送端
    构造方法:
        Socket(IP地址,端口号);
        Socket(主机名,端口号);
    方法:
    getPort();返回端口号
    getLocalAddress();获取Socket对象绑定的本地IP地址
    getInputStream();获取一个输入对象
    getOutputStream();获取一个输出对象

 1 服务器端创建:
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 TCPSERver {
public static void main(String[] args) throws IOException {
ServerSocket ss=new ServerSocket();
Socket sk=ss.accept();
InputStream is=sk.getInputStream();
File f=new File("D:\\test\\d");
//判断服务器相对的文件夹是否存在
if(!f.exists())
{
f.mkdir();
}
//文件名改为域名+毫秒值+6位随机数
String filename="zys"+System.currentTimeMillis()+new Random().nextInt();
String path=f.getAbsolutePath()+File.separator+filename+".txt";
FileOutputStream fo=new FileOutputStream(path);
byte[] b=new byte[];
int len=;
while((len=is.read(b))!=-)
{
fo.write(b,,len);
} //回复客户端
OutputStream out=sk.getOutputStream();
out.write("上传成功".getBytes());
//释放
ss.close();
fo.close(); }
}
 1 创建客户端:
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;
import java.util.Random; public class TCPSERver {
public static void main(String[] args) throws IOException {
ServerSocket ss=new ServerSocket();
Socket sk=ss.accept();
InputStream is=sk.getInputStream();
File f=new File("D:\\test\\d");
//判断服务器相对的文件夹是否存在
if(!f.exists())
{
f.mkdir();
}
//文件名改为域名+毫秒值+6位随机数
String filename="zys"+System.currentTimeMillis()+new Random().nextInt();
String path=f.getAbsolutePath()+File.separator+filename+".txt";
FileOutputStream fo=new FileOutputStream(path);
byte[] b=new byte[];
int len=;
while((len=is.read(b))!=-)
{
fo.write(b,,len);
} //回复客户端
OutputStream out=sk.getOutputStream();
out.write("上传成功".getBytes());
//释放
ss.close();
fo.close(); }
}
 其他案例:
服务器使用多线程实现多人传送文件
将服务器实现代码实现Runnable接口
重写run方法,封装到run方法中 此代码中的ServerSocket ss=new ServerSocket();接收文件语句封装到实现类中
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket; public class Demo1 {
public static void main(String[] args) throws IOException {
ServerSocket ss=new ServerSocket();
//死循环一直接受客户端
while(true)
{
Socket sk=ss.accept();
MyRunnable mr=new MyRunnable(sk);
new Thread(mr).start(); } }
} import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.util.Random; public class MyRunnable implements Runnable{
private Socket sk; public MyRunnable(Socket sk)
{
this.sk=sk;
} public void run() {
FileOutputStream fo=null;
InputStream is=null;
try{
is=sk.getInputStream();
File f=new File("D:\\test\\d");
if(!f.exists())
{
f.mkdir();
}
//文件名改为域名+毫秒值+6位随机数
String filename="zys"+System.currentTimeMillis()+new Random().nextInt();
String path=f.getAbsolutePath()+File.separator+filename+".txt";
fo=new FileOutputStream(path);
byte[] b=new byte[];
int len=;
while((len=is.read(b))!=-)
{
fo.write(b,,len);
} //回复客户端
OutputStream out=sk.getOutputStream();
out.write("上传成功".getBytes()); }catch(IOException ex){
ex.printStackTrace();
}finally{
try {
fo.close();
} catch (IOException e) { e.printStackTrace();
}
} } }

TCP实现连接传输案例的更多相关文章

  1. socket套接字TCP协议传输-案例测试

    术语: 套接字接口:socket,是一个IP地址和一个端口号的组合,套接字可以唯一标识整个Internet中的一个网络进程. TCP连接:一对套接字接口(一个用于接收,一个用于发送)可定义面向连接的协 ...

  2. SQL Server 连接问题案例解析(1)

    SQL Server 连接问题案例解析(1) 转载自:http://blogs.msdn.com/b/apgcdsd/archive/2015/04/27/sql.aspx?CommentPosted ...

  3. TCP与UDP传输协议

    目录结构: contents structure [-] 1 TCP协议和UDP协议的比较 1.1 TCP协议 TCP的全称是Transmission Control Protocol (传输控制协议 ...

  4. 不仅仅是百万级TCP长连接框架 t-io

    t-io: 不仅仅是百万级TCP长连接框架 t-io是基于jdk aio实现的易学易用.稳定.性能强悍.将多线程运用到极致.内置功能丰富的即时通讯框架(广义上的即时通讯,并非指im),字母 t 寓意t ...

  5. 性能分析之TCP全连接队列占满问题分析及优化过程(转载)

    前言 在对一个挡板系统进行测试时,遇到一个由于TCP全连接队列被占满而影响系统性能的问题,这里记录下如何进行分析及解决的. 理解下TCP建立连接过程与队列 从图中明显可以看出建立 TCP 连接的时候, ...

  6. TCP/IP连接状态

    1.建立连接协议(三次握手)(1)客户端发送一个带SYN标志的TCP报文到服务器.这是三次握手过程中的报文1.(2) 服务器端回应客户端的,这是三次握手中的第2个报文,这个报文同时带ACK标志和SYN ...

  7. 网络层、传输层、应用层、端口通信协议编程接口 - http,socket,tcp/ip 网络传输与通讯知识总结

    引: http://coach.iteye.com/blog/2024511 什么是TCP和UDP,以及二者区别是什么? TCP的全称为传输控制协议.这种协议可以提供面向连接的.可靠的.点到点的通信. ...

  8. Http 和TCP的关系,TCP长连接和短连接有什么区别?

    HTTP 协议即超文本传送协议(Hypertext Transfer Protocol ),是Web联网的基础,也是手机联网常用的协议之一,HTTP协议是建立在TCP协议之上的一种应用.由于HTTP在 ...

  9. 用wireshark抓包分析TCP三次握手、四次挥手以及TCP实现可靠传输的机制

    关于TCP三次握手和四次挥手大家都在<计算机网络>课程里学过,还记得当时高超老师耐心地讲解.大学里我遇到的最好的老师大概就是这位了,虽然他只给我讲过<java程序设计>和< ...

随机推荐

  1. TCP连接过程及报文解析

    可能大家都听过TCP建立连接时需要经历三次握手和四次挥手的. 那么具体的握手挥手的过程是怎么样的呢? 这篇文章就通过WireShark抓包来了解TCP连接建立和断开的过程. 实验方法: 写一段简单的代 ...

  2. angular2相关

    脚手架安装一个项目 1.全局安装angular脚手架 npm install -g @angular/cli 2.初始化一个文件夹 ng new my-angular-demo 3.进入文件夹 cd ...

  3. JS中switch语句做选择时为什么可以不用break?

    在JavaScript中,switch语句相比其他语言并没有特殊之处. 在使用时,我们要注意每个分支后都应加一条break语句,否则后面的分支仍然会执行.实际程序中,我发现有时没用break语句,仍然 ...

  4. C++条件分支结构

    一.对于近期学习知识点的摘要: 1. 从第一个.cpp文件谈起, #include<iostream> //头文件 using namespace std; //使用命名空间,namesp ...

  5. c/c++获取文件夹下所有文件名

    如何获取某一文件夹下所有文件名,是一个很有意思的问题.网上代码很多,找了个简单的,特此收录. #include <iostream> #include <io.h> #incl ...

  6. awk调用date命令

    创建文件date.awk: $ == { cmd = "\"" while (cmd | getline line) { print line } close(cmd) ...

  7. JVM之类加载器、加载过程及双亲委派机制

    JVM 的生命周期 虚拟机的启动 Java 虚拟机的启动是通过引导类加载器(bootstrap class loader)创建一个初始类(initial class)来完成的,这个类是由虚拟机的具体实 ...

  8. 看直播 csust oj

    看直播 Description 小明喜欢看直播,他订阅了很多主播,主播们有固定的直播时间 [Li, Ri] . 可是他网速只有2M,不能同时播放两个直播,所以同一时间只能看一个直播. 并且他只会去看能 ...

  9. js上传文件过大导致上传失败原因以及解决办法

    背景:项目需要用到上传视频功能,由于视频有知识产权,要求必须上传到自己的服务器上不允许用第三方视频网站接口上传,于是一开始开始用的是input type=file去上传,小的视频上传没有问题,上传将近 ...

  10. Oracle触发器之系统触发器

    系统触发器 可以用系统触发器记录一些ddl的数据操作或者是数据库的登录 或者登出操作. 语法: create or replace trigger 触发器名称 before/after 触发器时机 事 ...