[1] TCP编程的主要步骤

  客户端(client):

    1.创建Socket对象,构造方法的形参列表中需要InetAddress类对象和int型值,用来指明对方的IP地址和端口号。

    2.通过Socket对象的getOutputStream()方法返回OutputStream抽象类子类的一个对象,用来发送输出流。

    3.通过输出流的write方法输出具体的信息。

    4.关闭相应的流和Socket对象。

  服务端(server):

    1.创建ServerSocket类的对象,在构造器中指明端口号。

    2.调用ServerSocket类对象的accept()方法,返回一个Socket类的实例。

    3.通过Socket实例的getInputStream()方法获取一个输入流,用来接收来自客户端的信息。

    4.利用输入流接收数据,并处理数据。

    5.关闭相应的流、Socket对象、ServerSocket对象。

[2] Java源程序 ( 注意:在测试时先开启服务端方法server(),再开启客户端方法client() )

  1. package pack01;
  2.  
  3. import java.io.*;
  4. import java.net.*;
  5. import org.junit.Test;
  6.  
  7. public class TestNet1 {
  8.  
  9. @Test //***********************客户端测试方法***********************
  10. public void client() {
  11.  
  12. Socket socket = null; //建立客户端网络套接字
  13. OutputStream socket_os = null; //客户端输出流
  14.  
  15. try {
  16. //1.获取本机环路地址
  17. InetAddress inet = InetAddress.getByName("127.0.0.1");
  18.  
  19. //2.创建Socket对象
  20. socket = new Socket(inet, 10000);
  21.  
  22. //3.获取输出流
  23. socket_os = socket.getOutputStream();
  24.  
  25. //4.客户端输出信息
  26. socket_os.write( "客户端发送信息".getBytes() );
  27.  
  28. } catch (IOException e) {
  29. e.printStackTrace();
  30.  
  31. } finally {
  32.  
  33. try { //关闭输出流
  34. socket_os.close();
  35. } catch (IOException e) {
  36. e.printStackTrace();
  37. }
  38.  
  39. try { //关闭客户端套接字
  40. socket.close();
  41. } catch (IOException e) {
  42. e.printStackTrace();
  43. }
  44. }
  45. }
  46.  
  47. @Test //***********************服务端测试方法***********************
  48. public void server() {
  49.  
  50. ServerSocket serSocket = null;
  51. Socket socket = null;
  52. InputStream socket_is = null;
  53.  
  54. try {
  55. serSocket = new ServerSocket(10000);
  56. socket = serSocket.accept(); //获取服务端套接字
  57. socket_is = socket.getInputStream(); //获取输入流
  58.  
  59. byte[] b = new byte[100]; //用于接收信息的字节数组
  60. int len;
  61. StringBuffer sb = new StringBuffer();
  62.  
  63. while( (len = socket_is.read(b)) != -1 ) {
  64. sb.append( new String(b,0,len) ); //将字节信息连续保存在buffer数组里
  65. }
  66. System.out.println("来自" + socket.getInetAddress().getHostName() + "的信息:");
  67. System.out.println( sb );
  68.  
  69. } catch (IOException e) {
  70. e.printStackTrace();
  71.  
  72. } finally {
  73.  
  74. try { //关闭输入流
  75. socket_is.close();
  76. } catch (IOException e) {
  77. e.printStackTrace();
  78. }
  79.  
  80. try { //关闭Socket对象
  81. socket.close();
  82. } catch (IOException e) {
  83. e.printStackTrace();
  84. }
  85.  
  86. try { //关闭ServerSocket对象
  87. serSocket.close();
  88. } catch (IOException e) {
  89. e.printStackTrace();
  90. }
  91. }
  92. }
  93.  
  94. }

注:希望与各位读者相互交流,共同学习进步。

Java分享笔记:Java网络编程--TCP程序设计的更多相关文章

  1. java基础篇---网络编程(TCP程序设计)

    TCP程序设计 在Java中使用Socket(即套接字)完成TCP程序的开发,使用此类可以方便的建立可靠地,双向的,持续的,点对点的通讯连接. 在Socket的程序开发中,服务器端使用serverSo ...

  2. Java精选笔记_网络编程

    网络编程 概述 现在的网络编程基本上都是基于请求/响应方式的,也就是一个设备发送请求数据给另外一个,然后接收另一个设备的反馈. 在网络编程中,发起连接程序,也就是发送第一次请求的程序,被称作客户端(C ...

  3. JAVA基础知识之网络编程——-TCP/IP协议,socket通信,服务器客户端通信demo

    OSI模型分层 OSI模型是指国际标准化组织(ISO)提出的开放系统互连参考模型(Open System Interconnection Reference Model,OSI/RM),它将网络分为七 ...

  4. 20165310 Java实验五《网络编程与安全》

    20165310 Java实验五<网络编程与安全> 任务一 题目:①编写MyBC.java实现中缀表达式转后缀表达式的功能:②编写MyDC.java实现从上面功能中获取的表达式中实现后缀表 ...

  5. JAVA基础知识之网络编程——-网络基础(Java的http get和post请求,多线程下载)

    本文主要介绍java.net下为网络编程提供的一些基础包,InetAddress代表一个IP协议对象,可以用来获取IP地址,Host name之类的信息.URL和URLConnect可以用来访问web ...

  6. Java基础教程:网络编程

    Java基础教程:网络编程 基础 Socket与ServerSocket Socket又称"套接字",网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个s ...

  7. java学习笔记15--多线程编程基础2

    本文地址:http://www.cnblogs.com/archimedes/p/java-study-note15.html,转载请注明源地址. 线程的生命周期 1.线程的生命周期 线程从产生到消亡 ...

  8. 网络编程TCP协议-聊天室

    网络编程TCP协议-聊天室(客户端与服务端的交互); <span style="font-size:18px;">1.客户端发数据到服务端.</span> ...

  9. C#网络编程TCP通信实例程序简单设计

    C#网络编程TCP通信实例程序简单设计 采用自带 TcpClient和TcpListener设计一个Tcp通信的例子 只实现了TCP通信 通信程序截图: 压力测试服务端截图: 俩个客户端链接服务端测试 ...

随机推荐

  1. RDMA in CloudComputing

    https://blog.csdn.net/qq_21125183/article/details/80563463

  2. 详细分析UserLock如何保证高校内部信息安全

    俄克拉荷马城市公立学校的IT团队负责该片区接近43000个学生的网络管理工作.长期以来,学生和教师员工共享Windows网络登录为他们带来了很多难题. 由于没有并发登录的限制,也不能对网络使用情况进行 ...

  3. Win8 Pro 64 Install .net3.5 在线升级会遇到错误0x800F0906。

    很多人安装Win8后都遇到了无法升级.NET Framework 3.5.1的问题,在线升级会遇到错误0x800F0906. Uninstall Windows update kB: KB296682 ...

  4. 通过 PowerShell 的方式增加虚拟机终结点

    关于虚拟机终结点的概念请阅读:如何设置虚拟机的终结点 本文包含以下内容(本文在名称为"pstest"的虚拟机做测试): 通过 PowerShell 的方式增加终结点 通过 Powe ...

  5. SQL Server ->> 建立linked server到Azure SQL Server

    EXEC master.dbo.sp_addlinkedserver @server = N'<nick_name_to_use>', @srvproduct=N'', @provider ...

  6. npm run dev运行Vue项目报错:Node Sass does not yet support your current environment

    导入Vue项目后,#npm run dev 报错: error in ./src/pages/hello.vue Module build failed: Error: Node Sass does ...

  7. Database 2 Day DBA guide_Chapter3

    Chapter 3: Getting Started with Oracle Enterprise Manager 第三章:开始oracle企业管理器. Purpose(目的) This chapte ...

  8. jsencrypt代码分析——openssl的rsa加密解密在js的实现

    在js上做rsa,感觉jsencrypt这个是封装的比较好的,但用起来还是遇到了些坑,所以踩进代码里填填坑- 项目在这里 https://github.com/travist/jsencrypt [r ...

  9. ZT在谷歌上班感受如何?

    在谷歌上班感受如何? 2013-11-05 作者:腾讯科技 出处: 互联网 责编:zlu     在谷歌这家全球最大最有抱负的技术公司工作将是怎样的情景呢?是天堂般的享受,还是地狱般的折磨呢?下面看一 ...

  10. 如何在SAP CRM WebClient UI里创建HANA Live Report

    1. 使用业务角色ANALYTICSPRO登录WebClient UI: 2. 点击新建按钮: 为新建的报表分配一个HANA Live Query: 指定Query的参数: 上图WebClient U ...