一个实例通过client端和server端通讯

客户端通过TCP/IP传输资源文件,比如图片,文字,音频,视频等.....

服务端接受到文件存入本地磁盘,返回接受到:“收到来自于"+s.getInetAddress().getHostName()+"的信息”

TestTCP3:

附源码:

package com.ykw.net;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;

import org.junit.Test;

//TCP编程例三:从客户端发送文件给服务端,服务端保存到本地。并返回"发送成功"给客户端。并关闭相应的连接
public class TestTCP3 {

@Test
    public void client()throws Exception{
        //1.创建Socket的对象
        Socket socket = new Socket(InetAddress.getByName("127.0.0.1"),9898);
        //2.从本地获取一个文件发送给服务端
        OutputStream os = socket.getOutputStream();
        FileInputStream fis = new FileInputStream(new File("1.jpg"));
        byte[] b = new byte[1024];
        int len;
        while((len=fis.read(b))!=-1){
            os.write(b,0,len);
        }
        socket.shutdownOutput();
        //3.接受来自于服务端的信息
        InputStream is = socket.getInputStream();
        byte[] b1 = new byte[1024];
        int len1;
        while((len1 = is.read(b1))!=-1){
            String str = new String(b1,0,len1);
            System.out.println(str);
        }
        //4.关闭相应的流和Socket对象
        is.close();
        os.close();
        fis.close();
        socket.close();
    }
    
    @Test
    public void server()throws Exception{
        //1.创建一个ServerSocket对象
        ServerSocket ss = new ServerSocket(9898);
        //2.调用其accept()方法,返回一个Socket对象
        Socket s = ss.accept();
        //3.将从客户端发送过来的信息保存到本地
        InputStream is = s.getInputStream();
        FileOutputStream fos = new FileOutputStream(new File("D://5.jpg"));
        byte[] b = new byte[1024];
        int len;
        while((len = is.read(b))!=-1){
            fos.write(b,0,len);
        }
        System.out.println("收到来自于"+s.getInetAddress().getHostAddress()+"的文件");
        //4.发送“接收成功”的信息反馈给客户端
        OutputStream os = s.getOutputStream();
        os.write("您发送的图片我已接收成功".getBytes());
        //5.关闭相应的流和Socket及ServerSocket的对象
        os.close();
        fos.close();
        is.close();
        s.close();
        ss.close();
    }
}

转载于:https://www.cnblogs.com/yukewei/p/5041165.html

JAVA TCP/IP网络通讯编程(二)相关推荐

  1. TCP/IP网络程序编程——端口扫描程序(TCP)

    端口扫描介绍 端口扫描可以收集目的主机的提供服务端口的信息,可以对于目的主机的信息进行收集. 端口扫描的程序每次会向目的主机特定端口发送一条请求,如果请求得到回应则可以判断是否本端口在对外开放,通过这 ...

  2. TCP/IP网络编程之多进程服务端(二)

    TCP/IP网络编程之多进程服务端(二) 信号处理 本章接上一章TCP/IP网络编程之多进程服务端(一),在上一章中,我们介绍了进程的创建和销毁,以及如何销毁僵尸进程.前面我们讲过,waitpid是非 ...

  3. TCP/IP网络编程之基于TCP的服务端/客户端(二)

    回声客户端问题 上一章TCP/IP网络编程之基于TCP的服务端/客户端(一)中,我们解释了回声客户端所存在的问题,那么单单是客户端的问题,服务端没有任何问题?是的,服务端没有问题,现在先让我们回顾下服 ...

  4. 网络编程+go+java,Go语言中的TCP/IP网络编程

    Go语言TCP/IP网络编程 乍一看,通过TCP/IP层连接两个进程会感觉可怕, 但是在Go语言中可能比你想象的要简单的多. TCP/IP层发送数据的应用场景 当然很多情况下,不是大多数情况下,使用更 ...

  5. Java TCP/IP Socket 编程 笔记

    http://jimmee.iteye.com/blog/617110 http://jimmee.iteye.com/category/93740 Java TCP/IP Socket 编程 笔记( ...

  6. TCP/IP网络编程之基于TCP的服务端/客户端(一)

    TCP/IP网络编程之基于TCP的服务端/客户端(一) 理解TCP和UDP 根据数据传输方式的不同,基于网络协议的套接字一般分为TCP套接字和UDP套接字.因为TCP套接字是面向连接的,因此又称为基于 ...

  7. TCP/IP网络编程之四书五经

    TCP/IP网络编程之四书五经 孟岩 TCP/IP协议是目前广域网和局域网通用的网络协议,因此,基于TCP/IP的编程就格外重要.从 应用上来说,现在直接利用C层次Socket API进行TCP/IP ...

  8. 高等学校计算机科学与技术教材:tcp/ip网络编程技术基础,TCP/IP网络编程技术基础...

    TCP/IP网络编程技术基础 语音 编辑 锁定 讨论 上传视频 <TCP/IP网络编程技术基础>是2012年北京交通大学出版社出版的图书,作者是王雷. 书    名 TCP/IP网络编程技 ...

  9. TCP/IP网络编程:P1->理解网络编程和套接字

    本系列文章为<TCP/IP网络编程----尹圣雨>学习笔记 文章目录 一.理解网络编程和套接字 1.1 构建接电话套接字 1.2 编写"Hello world!"服务器 ...

最新文章

  1. Mysql中的DCL
  2. volatile的用法
  3. Codeforces Round #331 (Div. 2) A. Wilbur and Swimming Pool 水题
  4. 网络协议栈11:Connect函数分解之TCP层
  5. LINUX IP命令详解
  6. 上海首次正式试用人脸识别系统抓医药代表:频繁出入的非就医可疑人员
  7. Markdown 如何编写表格(格式)?
  8. 使用cron表达式 设置定时任务
  9. snort简介以及在Ubuntu下的安装
  10. 【CCNA考试】2010-06-14-河北-936(PASS)
  11. 医院建设项目可行性研究报告、可行性分析报告
  12. linux中oracle中文乱码问题
  13. 中国移动何时成为“移动信息专家”
  14. base64 文件格式判断 图片类型判断 js
  15. 机器人编程语言有哪些? 这5大编程语言的优缺点你都了解?
  16. 遥感影像地图分类识别的研究与实现
  17. 一个IT男的500强生涯
  18. vue+echarts平面地图和飞线
  19. Inno Setup 编程技术全图文教程(转载)
  20. 简单搭建微服务springCloudNetflix服务(一)

热门文章

  1. 『设计模式』以为是个王者,后来班主任来了!设计模式--二五仔的观察者模式
  2. Codeforce-CodeCraft-20 (Div. 2)-B. String Modification (找规律+模拟)
  3. 计算机视觉领域热门研究方向state-of-art算法实时更新
  4. [Spark]PySpark入门学习教程---例子RDD与DataFrame
  5. [机器学习] LR与SVM的异同
  6. Python代码注释应该怎么写?
  7. 人工智能已经迫在眉睫_创意计算机已经迫在眉睫
  8. 为什么越来越多的人都拒绝办信用卡?
  9. 深圳多管齐下破解“融资难”
  10. 《环形女人》:“穿透”与“征兆”(全文)