package lianxi1;import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;import org.junit.Test;public class TestTCP1 {// 客户端
    @Testpublic void client() {Socket s = null;InputStream is = null;OutputStream os = null;try {s = new Socket(InetAddress.getByName("127.0.0.1"), 9090);//s = new Socket(InetAddress.getByName("221.192.74.152"), 9090); //对方主机的IP地址os = s.getOutputStream();String str1 = "我是客户端,请接收";os.write(str1.getBytes());s.shutdownOutput();is = s.getInputStream();byte[] b = new byte[20];int len;while((len=is.read(b))!=-1){String str = new String(b,0,len);System.out.print(str);}} catch (Exception e) {// TODO: handle exception
        }finally{if (is != null) {try {is.close();} catch (IOException e) {// TODO Auto-generated catch block
                    e.printStackTrace();}}if (os != null) {try {os.close();} catch (IOException e) {// TODO Auto-generated catch block
                e.printStackTrace();}}if (s != null) {try {s.close();} catch (IOException e) {// TODO Auto-generated catch block
                e.printStackTrace();}}}}// 服务器
    @Testpublic void server() {ServerSocket ss = null;Socket s = null;InputStream is = null;OutputStream os = null;try {ss = new ServerSocket(9090);s = ss.accept();is = s.getInputStream();byte[] b = new byte[20];int len;while ((len = is.read(b)) != -1) {String str = new String(b, 0, len);System.out.print(str);}os = s.getOutputStream();os.write("已收到客户端信息".getBytes());} catch (IOException e) {// TODO Auto-generated catch block
            e.printStackTrace();}finally{if (os != null) {try {os.close();} catch (IOException e) {// TODO Auto-generated catch block
                    e.printStackTrace();}}if (is != null) {try {is.close();} catch (IOException e) {// TODO Auto-generated catch block
                e.printStackTrace();}}if (s != null) {try {s.close();} catch (IOException e) {// TODO Auto-generated catch block
                e.printStackTrace();}}if (ss != null) {try {ss.close();} catch (IOException e) {// TODO Auto-generated catch block
                e.printStackTrace();}}}}
}

package lianxi1;import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;import org.junit.Test;public class TestTCP2 {// 客户端
    @Testpublic void client() {Socket s = null;InputStream is = null;OutputStream os = null;FileInputStream fis = null;try {s = new Socket(InetAddress.getByName("127.0.0.1"), 9090);//s = new Socket(InetAddress.getByName("221.192.74.152"), 9090); //对方主机的IP地址OutputStream fos = s.getOutputStream(); fis = new FileInputStream(new File("11.jpg"));byte[] b = new byte[1024];int len;while((len=fis.read(b))!=-1){fos.write(b, 0, len);}s.shutdownOutput();  //因为服务器端监听端口,所以只在客户端写
            is = s.getInputStream();byte[] b2 = new byte[10];int len2;while((len2=is.read(b2))!=-1){String str = new String(b2,0,len2);System.out.println(str);}} catch (Exception e) {// TODO: handle exception
        }finally{if (fis != null) {try {fis.close();} catch (IOException e) {// TODO Auto-generated catch block
                    e.printStackTrace();}}if (os != null) {try {os.close();} catch (IOException e) {// TODO Auto-generated catch block
                e.printStackTrace();}}if (is != null) {try {os.close();} catch (IOException e) {// TODO Auto-generated catch block
                e.printStackTrace();}}if (s != null) {try {s.close();} catch (IOException e) {// TODO Auto-generated catch block
                e.printStackTrace();}}}}// 服务器
    @Testpublic void server() {ServerSocket ss = null;Socket s = null;InputStream is = null;OutputStream os = null;try {ss = new ServerSocket(9090);s = ss.accept();FileOutputStream fos = new FileOutputStream("12.jpg");is = s.getInputStream();byte[] b = new byte[1024];int len;while ((len = is.read(b)) != -1) {fos.write(b, 0, len);}os = s.getOutputStream();os.write("已收到客户端信息".getBytes());} catch (IOException e) {// TODO Auto-generated catch block
            e.printStackTrace();}finally{if (os != null) {try {os.close();} catch (IOException e) {// TODO Auto-generated catch block
                    e.printStackTrace();}}if (is != null) {try {is.close();} catch (IOException e) {// TODO Auto-generated catch block
                e.printStackTrace();}}if (s != null) {try {s.close();} catch (IOException e) {// TODO Auto-generated catch block
                e.printStackTrace();}}if (ss != null) {try {ss.close();} catch (IOException e) {// TODO Auto-generated catch block
                e.printStackTrace();}}}}
}

转载于:https://www.cnblogs.com/yjtm53/p/4167721.html

TCP/IP网络编程相关推荐

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

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

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

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

  3. TCP/IP网络编程(3)

    基于DUP的服务端与客户端 在TCP/IP网络编程(2)中,介绍了TCP/IP的四层模型,传输层分为TCP和UDP两种方式,通过TCP套接字完成数据交换已经进行了介绍,下面介绍通过UDP套接字完成数据 ...

  4. TCP/IP网络编程(1)

    1. 套接字 套接字是由操作系统提供的网络数据通信软件设备,即使对网络数据传输原理不了解,也能够使用套接字完成网络数据传输.为了与远程计算机进行数据传输,需要连接到英特网,套接字就是进行网络连接的工具 ...

  5. 《TCP/IP网络编程》第20章

    <TCP/IP网络编程>第20章 同步方法分类及CRITICAL_SECTION同步 用户模式(User mode)和内核模式(Kernal mode) 用户模式同步 内核模式同步 基于C ...

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

    TCP/IP网络编程之多进程服务端(一) 进程概念及应用 我们知道,监听套接字会有一个等待队列,里面存放着不同客户端的连接请求,如果有一百个客户端,每个客户端的请求处理是0.5s,第一个客户端当然不会 ...

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

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

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

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

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

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

  10. tcp/ip网络编程--accept()函数返回的套接字

    tcp/ip网络编程–accept()函数返回的套接字 套接字:1)套接字是对网络中不同主机的应用进程之间进行双向通信的端点的抽象:一个套接字就是网络进程通信的一端.[1] 2)套接字是用来与另一个进 ...

最新文章

  1. 正则学习(2)--- 简单匹配原理
  2. python学起来难吗-python学起来难吗
  3. 快速建立自己的个人网站!五款建站程序
  4. .NET平台开发必须掌握的XML知识(二)
  5. java split 数字_java截取字符串,截串,substring和split,分割字母和数字,正则缝隙...
  6. oracle虚拟用户是什么意思,lr脚本中oracle 2tier虚拟用户相关内容
  7. Spring+SpringMVC+Mybatis项目—企业权限管理系统(2)
  8. [设计模式] - 工厂模式
  9. python实现简单爬虫百度首页_python实现简单爬虫功能的示例
  10. 美团 -python
  11. Manage Attachment feature
  12. Linux之-atime、ctime、mtime
  13. Python沪深300成分股价值分析
  14. 神经网络中Epoch、Iteration、Batchsize相关理解和说明
  15. 用python爬取xkcd.com上的有趣漫画图片
  16. 互换性测量技术-几何误差
  17. 小程序前景无限,还能一键转换成App?
  18. python开发数据管理系统客户桌面_实践是最好的老师:给中级 Python 开发人员的 13 个项目构想...
  19. 深耕模具细分领域20载 德惠创新研发领跑行业
  20. SPSS——数据预处理

热门文章

  1. 毫秒级百万数据分页存储过程(mssql)
  2. makefile how to
  3. sqlite的交叉编译及移植 -转
  4. [windows网络编程]tcp/udp编程初步详解-转
  5. L2-008. 最长对称子串-PAT团体程序设计天梯赛GPLT
  6. LeetCode344. Reverse String
  7. zabbix3.0 监控mysql服务器性能实现过程
  8. Net::SSH::Perl 连接远程主机慢的原因
  9. 一步步实现 Redis 搜索引擎 1
  10. 【IDEAEclipse】4、IntelliJ IDEA上操作GitHub