tcp传输指令(tcp传输过程)

      最后更新:2024-01-04 08:55

      16进制通讯指令tcp如何发送

      此通讯格式为Modbus-TCP的
      16进制通讯指令tcp如何发送

      EC20 TCP/IP AT指令

      本模块嵌入一个TCP/IP栈。主机(即外接的控制器)可通过AT指令直接连接互联网。它可以减少对PPP和TCP/IP协议栈的依赖和最小化的消耗。本模块提供以下的套接字服务:TCP客户端,UDP客户端,TCP服务器和UDP服务器。 通过TCP/IP AT指令,主机可以配置PDP上下文,触发/吊销PDP上下文,开始/关闭套接字服务和发送/接收数据通过套接字服务。下图表明怎么使用TCP/IP AT指令:本模块TCP/IP的AT指令包含三种类型的数据通道类型。1.缓存通道模式。2.直接传递通道模式。3.透传通道模式。当通过AT+QIOPEN开启一个套接字服务,可以通过参数确认数据传输模式。当套接字服务开启后,AT+QISWTMD可以被用来改变数据通道模式。1.在缓存模式中,发送数据通过AT+QISEND。当接收到数据时,模块会缓冲这个数据,然后上传一个 +QIURC:"recv",的URC给主机。主机可通过使用AT+QIRD读取数据。说明:如果模块缓冲区不是空的,模块不会发送一个新的URC给主机,除非主机通过AT+QIRD读取所有数据。2.在直接传递模式中,发送数据通过AT+QISEND。当接收到数据,数据将会以 +QIURC:"recv",, 直接通过COM口发送给主机。3.在透传模式中,相对应的端口(如UART,USB解调器等)进入专有的模式(USB AT端口不支持透传模式)。模块从COM口接收到的数据直接发送到互联网上,从互联网上接收到的数据直接从COM口传输给主机。“+++”是用来退出透传模式的。当“+++”返回OK,这个模块将会切换到缓存通道模式。AT+QISWTMD可以被用来回到透传模式。说明:在透传模式中,主机不能执行AT指令。如果套接字连接因为网络错误或者其他原因关闭,模块会上传NO CARRIER给主机和退出透传模式。在这种情况,AT+QICLOSE将被执行去关闭套接字服务。4.为了退出透传模式,使用“+++”或者DTR(设置AT&D1)。为了防止“+++”被当成数据,它应该完成如下顺序:1)在输入“+++”之前T1时间(1秒)内不要输入任何字符;2)在输入“+++”1秒内,没有任何字符输入;3)在输入“++++”后,1秒内不要输入任何字符;4)返回OK,退出透传模式。5.这里有两种方式回到透传模式:1)使用AT+QISWTMD。设置为2.如果进入透传模式,CONNECT将会反馈。 2)使用ATO。在退出透传模式后,ATO将会改变传输模式到透传模式。如果成功,返回CONNECT,失败,返回NO CARRIER。
      EC20 TCP/IP AT指令

      java如何通过tcp发送指令

      使用Socket做 java.net.*下边有
      基于Scoket实现,基本原理服务器启动后绑定相应的端口,在该端口上进行监听,当客户端向该服务器发送请求后,服务器接收处理后反馈给客户端。 文件一: SocketServer.java---->Socket服务器端package com.huameng.socket.next;import java.net.ServerSocket;/** * 服务器端Socket** @author Administrator**/public class SocketServer { /*** 服务器端Socket构造方法*/public SocketServer() {try { int clientcount = 0; // 统计客户端总数 boolean listening = true; // 是否对客户端进行监听 ServerSocket server = null; // 服务器端Socket对象 try {// 创建一个ServerSocket在端口2121监听客户请求server = new ServerSocket(2121);System.out.println("Server starts...");} catch (Exception e) {System.out.println("Can not listen to. " + e);} while (listening) {// 客户端计数clientcount++;// 监听到客户请求,根据得到的Socket对象和客户计数创建服务线程,并启动之new ServerThread(server.accept(), clientcount).start();}} catch (Exception e) {System.out.println("Error. " + e);}} /*** 主方法** @param args*/public static void main(String[] args) {new SocketServer();}} 文件二: ServerThread.java ---->服务器监控器package com.huameng.socket.next;import java.io.BufferedReader;import java.io.InputStreamReader;import java.io.PrintWriter;import java.net.Socket;public class ServerThread extends Thread { private static int number = 0; // 保存本进程的客户计数 Socket socket = null; // 保存与本线程相关的Socket对象 public ServerThread(Socket socket, int clientnum) {this.socket = socket;number = clientnum;System.out.println("当前在线的用户数: " + number);} public void run() {try { // 由Socket对象得到输入流,并构造相应的BufferedReader对象BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream())); // 由Socket对象得到输出流,并构造PrintWriter对象PrintWriter out = new PrintWriter(socket.getOutputStream()); // 由系统标准输入设备构造BufferedReader对象BufferedReader sysin = new BufferedReader(new InputStreamReader(System.in)); // 在标准输出上打印从客户端读入的字符串System.out.println("[Client " + number + "]: " + in.readLine()); String line; // 保存一行内容 // 从标准输入读入一字符串line = sysin.readLine(); while (!line.equals("bye")) { // 如果该字符串为 "bye",则停止循环// 向客户端输出该字符串out.println(line);// 刷新输出流,使Client马上收到该字符串out.flush();// 在系统标准输出上打印读入的字符串System.out.println("[Server]: " + line);// 从Client读入一字符串,并打印到标准输出上System.out.println("[Client " + number + "]: " + in.readLine());// 从系统标准输入读入一字符串line = sysin.readLine();} out.close(); // 关闭Socket输出流in.close(); // 关闭Socket输入流socket.close(); // 关闭Socket} catch (Exception e) {System.out.println("Error. " + e);}}} 文件三: ScoketClient.java---->Scoket客户端package com.huameng.socket.next;import java.io.BufferedReader;import java.io.InputStreamReader;import java.io.PrintWriter;import java.net.Socket;/*** 客户端Socket** @author Administrator**/public class SocketClient { /*** 客户端Socket构造方法*/public SocketClient() {try { // 向本机的2121端口发出客户请求Socket socket = new Socket("localhost", 2121); System.out.println("Established a connection..."); // 由系统标准输入设备构造BufferedReader对象BufferedReader sysin = new BufferedReader(new InputStreamReader(System.in)); // 由Socket对象得到输出流,并构造PrintWriter对象PrintWriter out = new PrintWriter(socket.getOutputStream()); // 由Socket对象得到输入流,并构造相应的BufferedReader对象BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream())); String line; // 保存一行内容 // 从系统标准输入读入一字符串line = sysin.readLine(); while (!line.equals("bye")) { // 若从标准输入读入的字符串为 "bye"则停止循环// 将从系统标准输入读入的字符串输出到Serverout.println(line);// 刷新输出流,使Server马上收到该字符串out.flush();// 在系统标准输出上打印读入的字符串System.out.println("[Client]: " + line);// 从Server读入一字符串,并打印到标准输出上System.out.println("[Server]: " + in.readLine());// 从系统标准输入读入一字符串line = sysin.readLine(); } out.close(); // 关闭Socket输出流in.close(); // 关闭Socket输入流socket.close(); // 关闭Socket} catch (Exception e) {System.out.println("Error. " + e);}} /*** 主方法** @param args*/public static void main(String[] args) {new SocketClient(); }}
      java如何通过tcp发送指令

      tcp如何采用滑动窗口实现可靠传输

      tcp采用滑动窗口实现可靠传输方法如下:TCP传输字节文件时,在传输方有一个窗口缓冲区(窗口区),该大小由接收方返回的接收缓冲区大小决定,若产生拥塞,发送方的窗口大小可能会有所调整。1、窗口区外的字节数据要么被传输成功,并收到了ACK确认,要么是不能传输的部分。2、窗口区内的字节数据要么传输了,但未收到ACK确认,要么可传输,但还未传输。 3、正常情况下,传输方连续传输窗口内的字节数据到接收方,接收方返回ACK+期望收到的下一个序号,传输方收到ACK确认后将窗口的前沿和后沿向前移动。
      tcp如何采用滑动窗口实现可靠传输

      java如何通过tcp发送指令

      以下是一个展示java使用tcp通讯的简单例子,包括服务器和客户端代码: /***TCPServer*/import java.io.*;import java.net.*;class TCPServer{public static void main(String[] args)throws IOException{ServerSocket listen = new ServerSocket(5050);Socket server= listen.accept();InputStream in = server.getInputStream();OutputStream out = server.getOutputStream();char c = (char)in.read();System.out.println("收到:" + c);out.write('s');out.close();in.close();server.close();listen.close();}}/***TCPClient*/import java.io.*;import java.net.*;class TCPClient{public static void main(String[] args)throws IOException{Socket client = new Socket("127.0.0.1" , 5050);InputStream in = client.getInputStream();OutputStream out = client.getOutputStream();out.write('c');char c = (char)in.read();System.out.println("收到:" + c);out.close();in.close();client.close();} }
      import java.io.BufferedReader; import java.io.InputStreamReader;import java.io.PrintWriter;import java.net.InetAddress;import java.net.Socket;public class SimpleClient {public static void main(String[] args) throws Exception {Socket socket=new Socket(InetAddress.getByName("127.0.0.1"),8888);//连接某台机器(127.0.0.1)上的某个端口(8888)PrintWriter pw=new PrintWriter(socket.getOutputStream());//得到Socket连接的输出流pw.println("你好服务器!!");//向服务器发送数据(有可能在缓存里面不会立刻发送,所以要下面的语句)pw.flush();//立刻发送数据BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));//取得Socket连接的输入流System.out.println(in.readLine());//打印取得的数据Thread.sleep(1000);}} 这是一个简单的客户端连接发送例子
      Socket 类和SocketServer类
      java如何通过tcp发送指令

      本文由 在线网速测试 整理编辑,转载请注明出处。

          热门文章

          文章分类