文章目录

  • 一、TCP网络程序设计是什么?
  • 二、TCP网络程序设计原理:
    • 1.图示:
    • 2.客户端与服务器端分析:
    • 3.如何利用DOS窗口查看自己的IP地址:
      • ①打开cmd管理员窗口
      • ②输入命令查看IP地址
  • 三、网络通信案例测试:
    • 1.服务器端类:
    • 2.客户端类:
  • 四、运行结果:
    • 1.开启服务器端
    • 2.开启客户端
    • 3.注意事项:
  • 五、总结

提示:以下是本篇文章正文内容,下面案例可供参考

一、TCP网络程序设计是什么?

TCP网络程序设计是指利用Socket类编写通信程序。
利用TCP协议进行通信的程序有主次之分,一个称为服务器端程序,另一个称为客户端程序


二、TCP网络程序设计原理:

1.图示:

2.客户端与服务器端分析:

Socket的本质就是将数据抽象成I/O流,在网络间传输数据
套接字两台机器间通信的端点

服务器端:可以给客户端写出数据,读取客户端发来的数据
客户端:可以读取服务器端发来的数据,给服务器写出数据

用到的工具类:
服务器端:ServerSocket
创建对象:ServerSocket(int port)
该方法创建绑定到特定端口的服务器套接字
参数port为端口号由自己定义除0~1024以及安装的软件默认占用的端口号之外的端口号
调用方法:Socket(返回值类型) accept()
该方法侦听并接收到此套接字的连接

客户端:Socket
创建对象:Socket(String host,int port)
参数host为IP地址port为端口号
该方法创建一个流套接字并将其连接到指定主机上的端口号
调用方法:InputStream类中的getInputStream()方法
该方法能够返回此套接字的输入流
                  OutputStream类中的getOutputStream()方法
该方法能够返回此套接字的输出流

3.如何利用DOS窗口查看自己的IP地址:

①打开cmd管理员窗口

按下win+r键快速启动命令窗口,输入cmd打开管理员界面

②输入命令查看IP地址

输入 ipconfig 命令即可获取到本机的地址信息,IPv4便为本机的IP地址


三、网络通信案例测试:

1.服务器端类:

package dreamfly.net.server;//读取客户端发来的数据,给客户端写出数据import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;public class Server {public static void main(String[] args) throws IOException {//1.开启服务器,参数是指开着的端口号ServerSocket server = new ServerSocket(8899);System.out.println("服务器已成功启动");//2.接收客户端发来的连接Socket socket = server.accept();System.out.println("接收到客户端发来的请求");//3.获取读取流InputStream in = socket.getInputStream();//4.读取数据
//        int data = in.read();      //默认返回的是整数for (int i = 0;i < 5;i++){char data = (char)in.read();System.out.print(data);}//5.给客户端写出数据System.out.println();OutputStream out = socket.getOutputStream();out.write("world".getBytes());System.out.println("服务器端成功发送数据");out.close();}
}

运行时要先在方法处抛出IOException或者用try/catch语句块包围可能会发生异常的语句,在这里我选择了第一种抛出IOException,其次在服务器端类中输出语句是为了检测是否成功发送出数据,如果没有执行到输出语句则说明数据没有发送成功。

2.客户端类:

package dreamfly.net.client;//读取服务器端发来的数据,给服务器端写出数据import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;public class Client {public static void main(String[] args) throws IOException {//1.连接到指定的服务器(ip+port)Socket socket = new Socket("127.0.0.1",8899);System.out.println("已连接成功");//2.获取写出流OutputStream out = socket.getOutputStream();//3.写出数据,字节流只能写出整数或字节数组//将hello对应整数编程对应的字节数组,getBytes()将String转换为byte[]out.write("hello".getBytes());System.out.println("客户端成功发送数据");InputStream in = socket.getInputStream();for (int i = 0;i < 5;i++){char data = (char)in.read();System.out.print(data);}System.out.println();System.out.println("成功接收服务器端数据");out.close();}
}

四、运行结果:

1.开启服务器端

2.开启客户端

服务器端运行结果:

客户端运行结果:

3.注意事项:

运行顺序为:先开启服务器端再运行客户端
OutStream 字节流只能写出整数或字节数组要传输字符串类型的数据时要用getBytes()方法将String类型的数据转换为byte[]字节数组

如果在没有开启服务器端的情况下开启客户端,将会有以下的运行结果:

原因:因为服务器端口号没有打开,客户端无法连接到服务器对应端口


五、总结

以上就是Java实现简单的网络通信的内容,附上本文中用到的类在API中的描述



Java实现网络通信(TCP程序设计)相关推荐

  1. java网络编程--TCP程序设计

    一,本章目标 了解Socket和ServerSocker类的作用 掌握ECHO程序开发 将多线程应用在TCP程序上实现多用户操作 二,具体内容 在java网络程序中,客户端只要符合连接的通讯协议,那么 ...

  2. Java网络编程---TCP通信

    TCP通信协议是一种可靠的网络协议,它在通信的两端各建立一个Socket对象,从而在通信两端形成网络虚拟链路,一旦建立了虚拟的网络链路,两端的程序就可以通过虚拟链路进行通信 Java对基于TCP协议的 ...

  3. 默蓝网络通信TCP/HTTP测试工具介绍

    默蓝网络通信TCP/HTTP测试工具介绍 默蓝网络通信TCP/HTTP测试工具为广大技术开发人员提供的通信测试工具,其具备如下功能: 1.支持TCP/IP协议的网络通信,TCP服务端和客户端,可单条发 ...

  4. Java中的TCP发送和接收数据

    一.发送数据 一.Java中的TCP通信 Java对基于TCP协议的网络提供了良好的封装,使用Socket对象来代表两端的通信端口,并通过Socket产生IO流来进行网络通信 Java为客户端提供了S ...

  5. java tcp 三次握手_用Java代码分析TCP的三次握手四次挥手过程

    (1)客户端发送一个带SYN标志的TCP报文到服务器.这是三次握手过程中的报文1. (2) 服务器端回应客户端的,这是三次握手中的第2个报文,这个报文同时带ACK标志和SYN标志.因此它表示对刚才客户 ...

  6. 20175212童皓桢 Java实验二-面向对象程序设计实验报告

    20175212童皓桢 Java实验二-面向对象程序设计实验报告 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O.L.I.D原则 了解设 ...

  7. java综合图形界面程序设计_java综合图形界面程序设计.doc

    java综合图形界面程序设计.doc 还剩 10页未读, 继续阅读 下载文档到电脑,马上远离加班熬夜! 亲,喜欢就下载吧,价低环保! 内容要点: [键入文字]10四.实验小结(包括问题和解决方法.心得 ...

  8. java计算机毕业设计面向对象程序设计课程网站源码+系统+mysql数据库+lw文档

    java计算机毕业设计面向对象程序设计课程网站源码+系统+mysql数据库+lw文档 java计算机毕业设计面向对象程序设计课程网站源码+系统+mysql数据库+lw文档 本源码技术栈: 项目架构:B ...

  9. JAVA进阶案例 TCP编程之网络聊天工具(服务端)

    实现分析. 1.开启服务端 客户端选择'登录以后'后,提示输入用户名和密码,验证成功则进入好友列表界面 2.用户聊天 双击好友,进入好友聊天界面.在信息框编辑信息 点击发送 当客户端向服务端发送数据时 ...

  10. Java 面试题 —— TCP 粘包、拆包问题

    Java 面试题 -- TCP 粘包.拆包问题 1.粘包.拆包问题概况 正常情况: ​  服务端一共接收到客户端的两个数据包,两个数据包各自包含完整的消息. 粘包问题: ​  服务端一共接收到客户端的 ...

最新文章

  1. 开源组织:Datawhale
  2. 在C#中使用SerialPort类实现串口通信
  3. Devexpress报表开发(二):创建数据报表
  4. Codeforces Round #744 (Div. 3)【A-E1】
  5. mybatis修改mysql变量_Java通过MyBatis框架对MySQL数据进行增删查改的基本方法
  6. java 2_Java(二)
  7. ltrim函数_MySQL|trim() 函数用法
  8. hdu 3038 HowManyAnswersAreWrong 并查集
  9. ListView自适应实现表格
  10. Spring @RequestMapping注解示例
  11. PHP自定义查询,php – 实体字段类型自定义查询参数
  12. 使用JDBC编程的问题总结
  13. grads插值_GrADS中格点插值到站点(gr2stn)的详细方法
  14. 最大子列和(C语言)
  15. 静心的全部秘密:你是观照者
  16. CH582 BLE 5.0 使用 LE Coded 广播和连接
  17. Ubuntu系统下搭建C/C++ gcc开发环境
  18. 突破运营商 QoS 封锁,WireGuard 真有“一套”!
  19. 2018 最好的自动化测试工具
  20. Stacked Hourglass Networks

热门文章

  1. WebDav-Milton之一
  2. 5G NR LDPC码(3)—— DL-SCH和UL-SCH的LDPC处理(含代码)
  3. 黄金分割法c语言源代码,黄金分割法-C语言
  4. 极客时间前端进阶特训营winter、杨村长、然叔、高少云,《精通React》大专栏,React低代码项目,前端算法实战,杨村长Vue3开源组件库实战(Vue3+Vite+VitePress+TSX+T
  5. WOS(一)——文献高级检索
  6. 函数的连续性与间断点
  7. 如何查看当前域名的注册信息?
  8. QT笔记- 如何判断窗口小部件是否自动出现(或隐藏)了滑条?
  9. Slicer学习笔记(六十一)slicer下segmentation segment合并
  10. 如何主动退出小程序(微信小程序)