使用的类
    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. Netty(一):ByteBuf读写过程图解

    我们知道ByteBuf通过读写两个索引分离,避免了NIO中ByteBuffer中读写模式切换时,需要flip等繁琐的操作. 今天就通过一段测试代码以及图例来直观的了解下ByteBuf中的readInd ...

  2. dijkstra preiority_queue优化 紫书学习

    #include<bits/stdc++.h> using namespace std; const int maxn=1000+10; const int INF=1000000000; ...

  3. spring security learning(spring in action)

    1.使用Spring Security配置命名空间 spring securtiy 提供了安全性相关的命名空间,我们可以将spring security的命名空间声明添加到spring公用的配置xml ...

  4. mysql查询语句中like 的用法

    1.常见用法: (1)搭配%使用 %代表一个或多个字符的通配符,譬如查询字段name中以大开头的数据: (2)搭配_使用 _代表仅仅一个字符的通配符,把上面那条查询语句中的%改为_,会发现只能查询出一 ...

  5. HDU 1248 寒冰王座(完全背包问题另类解法)

    寒冰王座 Problem Description 不死族的巫妖王发工资拉,死亡骑士拿到一张N元的钞票(记住,只有一张钞票),为了防止自己在战斗中频繁的死掉,他决定给自己买一些道具,于是他来到了地精商店 ...

  6. 在Jetson TX2上安装caffe和PyCaffe

    caffe是Nvidia TensorRT最支持的深度学习框架,因此在Jetson TX2上安装caffe很有必要.顺便说一句,下面的安装是支持python3的. 先决条件 在Jetson TX2上完 ...

  7. Spring Data Jpa 入门学习

    本文主要讲解 springData Jpa 入门相关知识, 了解JPA规范与Jpa的实现,搭建springboot+dpringdata jpa环境实现基础增删改操作,适合新手学习,老鸟绕道~ 1. ...

  8. IDEA2020版使用

    idea2020版本出来了,不知道小伙伴使用了吗?是不是还在为激活而烦恼呢?我来给小伙伴解决烦恼了,直接上硬货,解决方法我是在B站找到,所以分享出来! 1.直接进IDEA官网下载最近的idea,官网连 ...

  9. Java——TCP/IP超详细总结

    网络的基础知识 一.协议 1.简介: 在计算机网络与信息通信领域里,人们经常提及“协议”一词.互联网中常用的具有代表性的协议有IP.TCP.HTTP等.而LAN(局域网)中常用的协议有IPX/SPX” ...

  10. P1640 连续攻击游戏

    题目传送门 Ⅰ.二分图匹配 其实这题应该不难看出是二分图匹配(尽管我没看出来) 每个物品只能用一次,实际上就是1~n的数字对物品的最大匹配 把物品的两个属性向物品编号连边,之后就从数字1一直匹配过去 ...