在Java中实现TCP协议编程
ServerSocket:编写TCP网络服务程序,首先要用到java.net.ServerSocket类用以创建服务器Socket
构造方法:
ServerSocket(int port):创建绑定到特定端口的服务器套接字
ServerSocket(int port, int backlog):利用指定的backlog(服务器忙时保持连接请求的等待客户数量),创建服务器套接字并将其绑定到指定的本地端口号。
ServerSocket(int port, int backlog, InetAddress bindAddr):使用指定的端口、侦听 backlog 和要绑定到的本地 IP 地址创建服务器。
Socket:客户端要与服务器建立连接,必须先创建一个Socket对象
常用构造方法
Socket(String host, int port):创建一个流套接字并将其连接到指定主机上的指定端口号。
Socket(InetAddress address, int port):创建一个流套接字并将其连接到指定 IP 地址的指定端口号。
服务器端程序调用ServerSocket类中的accept()方法等待客户端的连接请求,一旦accept()接收了客户端连接请求,该方法返回一个与该客户端建立了专线连接的Socket对象,不用程序去创建这个Socket对象。建立了连接的两个Socket是以IO流的方式进行数据交换的,Java提供了Socket类中的getInputStream()返回Socket的输入流对象,getOutputStream()返回Socket的输出流对象。
TCP服务器与TCP客户端间的数据的接受图示:
创建一个TCP服务器端程序的步骤
(1)创建一个ServerSocket
(2)从ServerSocket接受客户连接请求
(3)创建一个服务线程处理新的连接
(4)在服务线程中,从socket中获得I/O流
(5)对I/O流进行读写操作,完成与客户的交互
(6)关闭I/O流
(7)关闭Socket
ServerSocket server=new ServerSocket(port)
Socket s =server.accept();
ObjectInputStream in=new ObjectInputStream(s.getInputStream());
ObjectOutputStream out=new ObjectOutputStream(s.getOutputStream());
out.close();
in.close();
s.close();
创建一个TCP客户端程序的步骤
(1)创建Socket
(2)获得I/O流
(3)对I/O流进行读写操作
(4)关闭I/O流
(5)关闭Socket
Socket connection =new Socket(127.0.0.1,9009);
ObjectInputStream input=new ObjectInputStream(connection.getInputStream());
ObjectOutputStream output=new ObjectOutputStream(connection.getOutputStream());
output.close();
input.close();
connection.close();
用TCP实现服务器与客户端的“聊天”:
实例代码:
客户端:
package com.hbsi.net;
import java.net.Socket;
import java.io.*;
public class TcpClient{
public static void main(String[] args) throws Exception {
// 1.建立tcp客户端socket,要确定要连接的服务器ip,port
Socket s = new Socket("192.168.49.87", 9009);
// 获取键盘录入
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
// 2.通过建立的socket,获取输出流对象
// 数据输出给服务器端
OutputStream out = s.getOutputStream();
BufferedWriter bwout = new BufferedWriter(new OutputStreamWriter(out));
// 获取服务器端返回的数据
// 读取服务器端发过来的信息InputStreamReader()
BufferedReader brin = new BufferedReader(new InputStreamReader(
s.getInputStream()));
String line = null;
while ((line = br.readLine()) != null) {
if (line.equals("over"))
break;
bwout.write(line);
bwout.newLine();
bwout.flush();
String str = brin.readLine();
System.out.println("server:" + str);
}
br.close();
s.close();
}
}
服务器端:
package com.hbsi.net;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class TcpServer{
public static void main(String[] args) throws Exception {
// 1.建立服务器socket
ServerSocket ss = new ServerSocket(9009);
// 2.调用accept()
Socket s = ss.accept();
System.out.println(s.getInetAddress().getHostAddress()
+ "...connection");
// 读取客户的信息的输入流
InputStream in = s.getInputStream();
BufferedReader brin = new BufferedReader(new InputStreamReader(in));
// 向客户端发送信息输出流,服务端向客户端返回信息OutputStreamWriter()
BufferedWriter brout = new BufferedWriter(new OutputStreamWriter(
s.getOutputStream())); String line = null;
while ((line = brin.readLine()) != null) {
System.out.println("client:" + line);
brout.write(line.toUpperCase());//服务器端收到信息后,将信息转为大写返回给客户端toUpperCase()
brout.newLine();
brout.flush();
}
s.close();
ss.close();
}
}
相关推荐
### ModbusTCP协议Java实现详解 #### 一、概述 Modbus协议是一种广泛应用于工业自动化领域的通信协议,它主要用于在设备之间进行数据交换。随着工业网络的发展,ModbusTCP/IP应运而生,该协议结合了Modbus的功能与...
在IT领域,网络通信是核心部分之一,而IP/TCP协议是互联网协议栈中的关键层次。本文将深入探讨如何利用Java编程语言实现对IP和TCP协议数据包的拦截与分析,以便获取IP地址的详细信息。 首先,我们需要理解IP...
在IT行业中,网络通信是至关重要的一个领域,TCP(Transmission Control Protocol...综上所述,"TCP_Java.rar"提供了关于Java实现TCP协议的基础知识和实践经验,对于深入理解TCP协议和Java网络编程有着重要的学习价值。
在这个场景中,我们关注的是使用Java实现的TCP协议客户机。 Java提供了`java.net`包,其中包含了一系列类和接口来支持TCP/IP通信。在实现TCP协议客户机时,主要会用到`Socket`类和`InputStream`/`OutputStream`接口...
3. **Java实现**: 在这个项目中,开发者使用Java编程语言实现了ModbusTCP协议的客户端部分,允许程序通过TCP连接与支持Modbus协议的设备进行交互。Java的选择是因为它具有跨平台性、丰富的库支持以及强大的网络编程...
它还适用于智能设备、传感器网络和物联网(IoT)项目,只要设备支持ModbusTCP协议。 以上内容涵盖了Java实现ModbusTCP通信的基本概念、技术要点以及代码示例。理解并掌握这些知识点,有助于在实际项目中构建稳定、...
- **Java实现**:在Java中,可以通过串口类(如jSerialComm)打开串口,设置波特率、奇偶校验等参数,然后使用Modbus RTU库(如JModbus的RTUMaster或RTUSlave类)构建和解析Modbus请求和响应。 4. **Modbus TCP** ...
通过以上Java编程实例,我们不仅学习了如何使用Java实现TCP通信的基本流程,还深入了解了TCP协议的工作原理。此示例代码可以作为学习TCP/IP网络编程的基础,帮助开发者理解客户端与服务器之间的交互过程。此外,实际...
在 Java 中,可以使用 Socket 编程来实现 Modbus TCP 通信。首先,需要创建一个 Socket 对象,用于连接到 Modbus 设备。然后,需要根据 Modbus TCP 协议的报文格式编码报文,发送到设备端。设备端将回复响应报文,...
通过分析源码,我们可以学习到如何在Java中使用TCP协议建立客户端-服务器通信,理解多线程在并发处理中的应用,以及如何设计简单的消息收发机制。此外,对于初学者,源码也是一个很好的学习资源,可以加深对Java网络...
在实际应用中,我们可以使用Java的`Socket`和`ServerSocket`类编写客户端和服务端程序,通过输入输出流进行数据交换,实现TCP协议的验证。例如,`Socket.getInputStream()`和`Socket.getOutputStream()`分别用于获取...
【Java实现基于TCP协议的简单Socket通信实例】 在Java中,TCP(传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。Socket是Java中实现网络通信的基本接口,它允许两台计算机通过TCP/IP进行通信...
本文将深入探讨如何使用Java的Netty框架实现一个基于DTU(Data Transfer Unit)的TCP服务器,该服务器具备多端口通信和多协议解析的能力。 首先,DTU是一种专门用于远程数据传输的设备,它能够通过GPRS、3G/4G等...
在工业自动化领域,...总的来说,这个项目为Java开发者提供了一个实用的起点,让他们能够快速地在TCP/IP环境中实现Modbus通信。无论是对于学习Modbus协议,还是在实际项目中使用,这个Java项目都是一个宝贵的资源。
在Java编程中,TCP(传输控制协议)常用于构建稳定、可靠的数据通信。TCP长连接是一种保持客户端与服务器端长时间连接的技术,以便于进行高效的数据交互。心跳机制是维持长连接的关键,它用来检测网络连接是否中断,...
在Java编程环境中,实现Modbus-TCP通信可以帮助开发者构建能够与各种自动化设备进行交互的应用程序。本压缩包“Modbus-TCP-java.rar”包含了用于Java环境下的Modbus TCP库——modbus4J的相关资源。 modbus4J是一个...
在这个场景中,我们有`TCP client.java`和`TCP server.java`两个文件,分别代表了TCP客户端和服务器端的Java实现。接下来,我们将深入探讨这两个关键组件的工作原理以及如何在Java中进行TCP Socket编程。 首先,TCP...
本篇文章将详细讲解如何使用Java实现TCP报文传输,包括服务器端和客户端的编程实现。 首先,TCP传输的核心是通过建立连接、交换数据和断开连接来完成通信。在Java中,我们主要使用`java.net.Socket`和`java.net....
在T/TCP的实现中,主要的改动集中在`sosend`函数以及常量的调整,以适应T/TCP协议的需求。以下是详细说明: 1. **概述** - 这一章主要讨论了N e t / 3版本中T/TCP协议的实现,按照卷2的结构进行讲解,涵盖了从插口...
在本项目中,我们探讨的是一个使用Java(J2SE)编写的简单多用户聊天系统,该系统基于TCP协议。TCP(传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议,它确保了数据的正确顺序传输和无丢失,...