一个实例通过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. python控制caxa模块_CAXA二次开发实用手册.doc
  2. PMP考前复习题 系列三
  3. 上周热点回顾(10.10-10.16)
  4. 【视频课】深度学习入门必修,子欲学算法,必先搞数据!
  5. 中心化(又叫零均值化)和标准化(又叫归一化)
  6. C的无符号数据类型int,short,byte 转为 Java对应的数据long,char,short
  7. Hadoop基础学习
  8. RabbitMQ 延迟插件的作用
  9. Avast I Love You
  10. 奇安信代码安全实验室帮助微软修复多个高危漏洞,获官方致谢
  11. 学术英语视听说2听力原文_做英语听力题有哪些非常实用的小技巧?
  12. Android Studio导入so文件到项目中
  13. Java如何对ArrayList里的元素排序
  14. 浅析HiShop、Shopex、ECshop、V5shop四大网店系统
  15. 爬虫ip代理,打码平台推荐
  16. CMD到底是啥?有啥用?
  17. c语言:输入三角形的边长求面积
  18. 新手建网站的步骤及注意事项
  19. 休闲食品线上与线下的差异化
  20. JKS 密钥库使用专用格式。建议使用 “xxx“ 迁移到行业标准格式 PKCS12

热门文章

  1. python打卡摄像头黑屏_500行Python代码打造刷脸考勤系统 !
  2. Win10最常用的快捷键,效率Max提高100%(常用的应该是最全的)
  3. 数据挖掘常用的方法(分类,回归、聚类、关联规则)
  4. Ubuntu 14.04系统下安装和编译QT 5.9.2库(桌面版/ARM嵌入式IMX6版)
  5. [机器学习] LightGBM on Spark (MMLSpark) 使用完全手册
  6. 【Android-NCNN-Vulkan】ncnn-vulkan load param model 速度慢
  7. Windows 下各种Python库的下载与安装
  8. hands-on Machine Learning with sklearn
  9. 端口停止使用_我停止使用
  10. 机器学习 异常值检测_异常值是否会破坏您的机器学习预测? 寻找最佳解决方案