Java实现网络通信(TCP程序设计)
文章目录
- 一、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程序设计)相关推荐
- java网络编程--TCP程序设计
一,本章目标 了解Socket和ServerSocker类的作用 掌握ECHO程序开发 将多线程应用在TCP程序上实现多用户操作 二,具体内容 在java网络程序中,客户端只要符合连接的通讯协议,那么 ...
- Java网络编程---TCP通信
TCP通信协议是一种可靠的网络协议,它在通信的两端各建立一个Socket对象,从而在通信两端形成网络虚拟链路,一旦建立了虚拟的网络链路,两端的程序就可以通过虚拟链路进行通信 Java对基于TCP协议的 ...
- 默蓝网络通信TCP/HTTP测试工具介绍
默蓝网络通信TCP/HTTP测试工具介绍 默蓝网络通信TCP/HTTP测试工具为广大技术开发人员提供的通信测试工具,其具备如下功能: 1.支持TCP/IP协议的网络通信,TCP服务端和客户端,可单条发 ...
- Java中的TCP发送和接收数据
一.发送数据 一.Java中的TCP通信 Java对基于TCP协议的网络提供了良好的封装,使用Socket对象来代表两端的通信端口,并通过Socket产生IO流来进行网络通信 Java为客户端提供了S ...
- java tcp 三次握手_用Java代码分析TCP的三次握手四次挥手过程
(1)客户端发送一个带SYN标志的TCP报文到服务器.这是三次握手过程中的报文1. (2) 服务器端回应客户端的,这是三次握手中的第2个报文,这个报文同时带ACK标志和SYN标志.因此它表示对刚才客户 ...
- 20175212童皓桢 Java实验二-面向对象程序设计实验报告
20175212童皓桢 Java实验二-面向对象程序设计实验报告 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O.L.I.D原则 了解设 ...
- java综合图形界面程序设计_java综合图形界面程序设计.doc
java综合图形界面程序设计.doc 还剩 10页未读, 继续阅读 下载文档到电脑,马上远离加班熬夜! 亲,喜欢就下载吧,价低环保! 内容要点: [键入文字]10四.实验小结(包括问题和解决方法.心得 ...
- java计算机毕业设计面向对象程序设计课程网站源码+系统+mysql数据库+lw文档
java计算机毕业设计面向对象程序设计课程网站源码+系统+mysql数据库+lw文档 java计算机毕业设计面向对象程序设计课程网站源码+系统+mysql数据库+lw文档 本源码技术栈: 项目架构:B ...
- JAVA进阶案例 TCP编程之网络聊天工具(服务端)
实现分析. 1.开启服务端 客户端选择'登录以后'后,提示输入用户名和密码,验证成功则进入好友列表界面 2.用户聊天 双击好友,进入好友聊天界面.在信息框编辑信息 点击发送 当客户端向服务端发送数据时 ...
- Java 面试题 —— TCP 粘包、拆包问题
Java 面试题 -- TCP 粘包.拆包问题 1.粘包.拆包问题概况 正常情况: 服务端一共接收到客户端的两个数据包,两个数据包各自包含完整的消息. 粘包问题: 服务端一共接收到客户端的 ...
最新文章
- 开源组织:Datawhale
- 在C#中使用SerialPort类实现串口通信
- Devexpress报表开发(二):创建数据报表
- Codeforces Round #744 (Div. 3)【A-E1】
- mybatis修改mysql变量_Java通过MyBatis框架对MySQL数据进行增删查改的基本方法
- java 2_Java(二)
- ltrim函数_MySQL|trim() 函数用法
- hdu 3038 HowManyAnswersAreWrong 并查集
- ListView自适应实现表格
- Spring @RequestMapping注解示例
- PHP自定义查询,php – 实体字段类型自定义查询参数
- 使用JDBC编程的问题总结
- grads插值_GrADS中格点插值到站点(gr2stn)的详细方法
- 最大子列和(C语言)
- 静心的全部秘密:你是观照者
- CH582 BLE 5.0 使用 LE Coded 广播和连接
- Ubuntu系统下搭建C/C++ gcc开发环境
- 突破运营商 QoS 封锁,WireGuard 真有“一套”!
- 2018 最好的自动化测试工具
- Stacked Hourglass Networks
热门文章
- WebDav-Milton之一
- 5G NR LDPC码(3)—— DL-SCH和UL-SCH的LDPC处理(含代码)
- 黄金分割法c语言源代码,黄金分割法-C语言
- 极客时间前端进阶特训营winter、杨村长、然叔、高少云,《精通React》大专栏,React低代码项目,前端算法实战,杨村长Vue3开源组件库实战(Vue3+Vite+VitePress+TSX+T
- WOS(一)——文献高级检索
- 函数的连续性与间断点
- 如何查看当前域名的注册信息?
- QT笔记- 如何判断窗口小部件是否自动出现(或隐藏)了滑条?
- Slicer学习笔记(六十一)slicer下segmentation segment合并
- 如何主动退出小程序(微信小程序)