通过 java建立客户端获取tcp服务端内容,并向服务端发送信息
该测试在idea中用springboot框架创建
tcp服务端采用java模拟实现,参考文章连接:https://blog.csdn.net/weixin_44384605/article/details/122533119
一、包和代码的引用
1.pom.xml文件包引入
<!-- 引入telnet_client包时会出现无法自动进入问题,建议采用下面的commons-net包-->
<!-- <dependency>-->
<!-- <groupId>telnet_client</groupId>-->
<!-- <artifactId>telnet_client</artifactId>-->
<!-- <version>0.1.6</version>-->
<!-- </dependency>-->
<!-- https://mvnrepository.com/artifact/commons-net/commons-net -->
<dependency>
<groupId>commons-net</groupId>
<artifactId>commons-net</artifactId>
<version>2.0</version>
</dependency>
2.TcpTest.java文件
import org.apache.commons.net.telnet.TelnetClient;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.stereotype.Component;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
@Component
public class TcpTest implements ApplicationRunner {
public void run(ApplicationArguments args) throws Exception {
//采用TelnetClient方式链接
// TelnetClient tcpNet = new TelnetClient();
//采用Socket方式链接
Socket tcpNet = new Socket();
try {
// tcp访问地址和端口
//采用TelnetClient方式链接
// tcpNet.connect("127.0.0.1", 30311);
// InputStream inputStream = tcpNet.getInputStream();
//采用Socket方式链接
tcpNet = new Socket("127.0.0.1", 30311);
InputStream inputStream = tcpNet.getInputStream();
byte[] b = new byte[1024];
int size;
while (true) {
System.out.println("----------获取TCP信息开始----------");
size = inputStream.read(b);
String aa = new String(b, 0, size);
System.out.println("tcp获取字符长度:" + size);
System.out.println("tcp获取的条码:" + aa);
//建立客户端信息输出流(客户端向服务端发送信息)
OutputStream pt = tcpNet.getOutputStream();
String printText = "客户端已成功接收信息!";
pt.write(printText.getBytes());
}
} catch (Exception e) {
e.printStackTrace();
System.out.println("++++++故障重新访问++++");
//断开tcp后自动重新链接
//断开后两秒后重新链接tcp Socket方式
tcpNet.connect(tcpNet.getRemoteSocketAddress(), 2000);
//断开后重新链接tcp TelnetClient方式
//tcpNet.disconnect();
}
}
}
二、测试结果
1.先启动tcp服务端—在启动tcp接收端