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. rewrite or internal redirection cycle while processing nginx重定向报错
  2. 8个写完以后就可以让你成为顶尖开发者的有趣应用程序
  3. 分享成为高效程序员的7个重要习惯
  4. vue实现可编辑的文字_苹果还自带文字转语音,只要一键按下便可实现,今天分享给大家...
  5. android 融云定义主题,融云开发者文档
  6. MVC面试问题与答案
  7. unix网络编程之基本套接口编程
  8. 小程序组件传值解决页面数据刷新
  9. Java随机密码生成器
  10. 图情论文笔记 | 智慧图书馆下的阅读推广服务策略
  11. 中国AI的“底线思维”与安全锁
  12. 推特由于技术问题,我们无法完成此次请求,请重试
  13. 瑞吉外卖第一篇(1):搭建环境之创建数据库
  14. scala泛型上下界
  15. 最优南北互通企业上网解决方案(转)
  16. 抢滩企业电子商刊(杂志)中国市场   iebook超级精灵全球发布
  17. Using fallback Sshlinedraw for CID-keyed font STSong-Light
  18. 模具设计需要学哪些技能?
  19. 全国计算机联赛第一名,IOI奥赛中国包揽全球前四!第一名为MIT去年大陆唯一常规录取人...
  20. 冲激序列的傅立叶变换

热门文章

  1. Google Play市场考察报告-2
  2. 程序员面试题100题第03题——求子数组的最大和
  3. ubuntu系统编译sh出错 默认dash不是bash
  4. 从头构建自己的Linux系统 -转
  5. L1-050 倒数第N个字符串-PAT团体程序设计天梯赛GPLT
  6. 1041. 考试座位号(15)-PAT乙级真题
  7. linux新建用户切换后显示-bash-4.1$(转载)
  8. Java 读写txt文件 中文乱码问题
  9. Kubernetes首爆严重安全漏洞,请升级你的Kubernetes
  10. Go语言探索 - 8(原创)