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

      最后更新:2023-10-15 18:05

      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发送指令

      tcp传输数据时是怎么工作的?

      tcp是一个面向连接的可靠传输协议,连接建立之后,每发送一个分组就停止发送等待对端确认(停止等待协议);但是该方式信道利用率太低,为了提高传输效率,所以采用滑动窗口协议,发送方一次性发送多个分组,接收方采取累积确认,收到几个分组后对按序到达的最后一个分组进行确认,而不必每发送一个分组就停下来等待确认。
      tcp传输数据时是怎么工作的?

      如何使用TCP向远端SERVER传输数据

      如何使用TCP向远端SERVER传输数据 (发送与接收)   1. 如何使用TCP向远端SERVER传输数据 先要建立一个TCP连接.模块作为CLIENT向远程的SERVER发起一个TCP连接,要成功 建立连接需要SERVER端为连接到INTERNET的一台PC,而且该PC的IP地址是公网的IP地址 (可以用拨号的方式获得,如在PC局域网内部则无法建立连接),然后该PC运行我们的 SERVER软件,这时就可以在模块端用AT命令与SERVER建立TCP连接(AT+CIPSTART= "TCP","SERVER的IP地址","SERVER的端口号"),连接成功后会返回CONNECT OK.然后就可以用AT+CIPSEND发送数据到SERVER,若SERVER有数据,模块自动通过 串口接收.要关闭TCP连接可用AT+CIPCLOSE命令. 2. 如何使用UDP向远端SERVER传输数据 先要注册一个UDP端口(AT+CIPSTART="UDP","SERVER的IP地址","SERVER 的端口号"),成功后返回CONNECT OK.然后用AT+CIPSEND发送UDP包到SERVER, 若SERVER有数据,模块自动接收,从串口送出. 3. 如何发送数据 要发送数据必须先要建立TCP连接或注册一个UDP连接.有3种方式发送数据.可变长 度的数据发送可以用AT+CIPSEND命令,返回"$amp;>amp;$quot;后输入发送的数据,ctrl+z(0x1a)启动 发送.固定长度的数据发送用AT+CIPSEND=LENGTH命令,返回"> "后输入发送的数据, 当输入的数据长度等于LENGTH的时候自动发送,不需结束符.还有一种自动发送方式,先 用AT+CIPATS=,命令设定自动发送的时间,然后用AT+CIPSEND返回"$amp;>amp;$quot; 输入要发送的数据,等定时到了之后自动发送输入的数据.发送完成之后返回SEND OK. 此时处于命令态,若有数据发送再重复以上的步骤就可以了. 注意:每次发送的数据长度应小于1024bytes. 4. 如何接收数据 接收数据为自动接收,若有远端数据则自动接收.可以用AT+CIPHEAD=1在接收的数 据前面自动加上标识. SIMCOM Application Note for SIM100 TCP/IP AT Commands 4 5. 如何使用SIM100TCP的SERVER功能 模块可以配置为TCPSERVER,接收来自远端的TCP数据.具体的操作如下: AT+CIPCSGP=1,"cmnet"(GPRS方式) AT+CLPORT="TCP","PORT" (设定侦听的TCP的端口号) AT+CIPSERVER (启动SERVER功能,成功后返回SERVER OK,这时候已经启动了SERVER 功能,开始侦听PORT) AT+CIFSR (获得SERVER的IP地址) 或者: AT+CIPCSGP=0,"17201","172","172", 2 (CSD方式,置为CSD连接,拨17201,用户名和密 码皆为172,连接速率为9600) AT+CLPORT="TCP","PORT"(设定侦听的TCP端口号) AT+CIPSERVER(启动SERVER功能,成功后返回CONNECT 9600 和 SERVER OK,这时 候已经启动了SERVER功能,开始侦听PORT) AT+CIFSR (获得SERVER的IP地址) 可以用SMS通知远端模块本SERVER的IP地址和端口号,以便远端可以与之连接,收发 数据. 这时远端的模块就可以与本SERVER建立连接,收发数据了. 如有CLIENT连接到SERVER,SERVER端会显示 REMOTE CLIENT的IP地址和端口号. 这时候SERVER就可以接收来自REMOTE CLIENT的TCP数据包(不含TCP头)了. 注意:目前TCP SERVER不能同时支持多个TCP连接. SIMCOM Application Note for SIM100 TCP/IP AT Commands 5 6. 如何使用UDP,接收来自远端的数据 可以使用SIM100TCP的UDP功能,接收来自远端的UDP数据.具体过程如下: AT+CIPCSGP=1,"cmnet"(GPRS方式) AT+CLPORT="UDP","端口号"(设置UDP端口号) AT+CSTT (启动TCP任务,成功后返回OK) AT+CIICR (激活场景,成功后返回OK) AT+CIFSR (获得本地IP地址) AT+CIPSTART="UDP","REMOTE IP ADDR","REMOTE PORT"(注册UDP 连接,其中"REMOTE IP ADDR"和"REMOTE PORT"可以随便设置一个,成功 后返回CONNECT OK) 或者 AT+CIPCSGP=0,"17201","172","172", 2 (CSD方式,置为CSD连接,拨17201,用户名 和密码皆为172,连接速率为9600) AT+CLPORT="UDP","PORT"(设定UDP端口号) AT+CSTT (启动TCP任务) AT+CIICR (激活场景,成功后返回CONNECT 9600和OK) AT+CIFSR (获得本地IP地址) AT+CIPSTART="UDP","REMOTE IP ADDR","REMOTE PORT"(注册UDP 连接,其中"REMOTE IP ADDR"和"REMOTE PORT"可以随便设置一个,成功 后返回CONNECT OK) 此时就模块就可以接收到远端的UDP包.可以用AT+CIPSRIP=1在收到的UDP包的前面 加上标识和发送方的IP地址和端口号. SIMCOM Application Note for SIM100 TCP/IP AT Commands 6 7. 如何使用DNS功能 利用SIM100TCP的DNS可直接连接到一个域名,或者可以用DNS解析域名获得IP地址.具体 步骤如下: 直接连接到一个域名 1:先配置DNS AT+CDNSCFG="211.136.18.171" (以上海为例) 2:选择域名还是IP地址 AT+CDNSORIP=1(选择域名) 3:建立连接 AT+CIPSTART="TCP","", "80" (连接到SERVER) 4:发送数据 AT+CIPSEND返回"$amp;>amp;$quot;后开始发送数据,ctrl+z启动发送. 解析域名获得IP地址 1:先激活一个移动场景 AT+CSTT AT+CIICR AT+CIFSR 2:配置DNS AT+CDNSCFG="211.136.18.171" (以上海为例) 3:解析域名,获得IP地址 AT+CDNSGIP="" 返回该域名的IP地址 8. 如何检测是否在线,断线后有什么提示 可以用AT+CIPSTATUS查询TCP所处的状态,具体状态请参考AT命令集,若处于连接 状态则返回CONNECTOK.断线后会主动返回CLOSE信息,同时TCP状态为IP CLOSE. 9. 如何区分接收的数据是AT命令的响应还是来自远端 设定AT+CIPHEAD=1,这样来自SERVER的数据前面就会自动加上一个标志,其格式 为:+IPD(datalength),+IPD为标识,datalength为来自SERVER端数据的长度.这样就可以 区分是来自SERVER的数据还是AT命令的相应. SIMCOM Application Note for SIM100 TCP/IP AT Commands 7 10. 如何使用SIM100TCP建立点对点的TCP连接,传输数据 用GPRS方式的具体步骤为: 第一台: AT+CLPORT="TCP","3030" AT+CIPSERVER (启动SERVER功能,开始侦听3030端口) AT+CIFSR(获取本地IP地址) AT+CLPORT="TCP","3000"(设置本地TCP端口) 第二台: AT+CLPORT="TCP","2020" AT+CIPSERVER (启动SERVER功能,开始侦听2020端口) AT+CIFSR(获取本地IP地址) AT+CLPORT="TCP","2000"(设置本地TCP端口) 第一台: AT+CIPSTART="TCP","REMOTE IP ADDR","2020" (REMOTEIP ADDR可由对方发SMS 得到) 已经建立连接 第二台: AT+CIPSTART="TCP","REMOTE IP ADDR","3030" 已经建立连接 之后任何一方就可以向另外一方发数据(用AT+CIPSEND发送) 也可以用CSD方式建立,具体操作如下: 第一台: AT+CIPCSGP=0,"17201","172","172", 2 (CSD方式,置为CSD连接,拨17201,用户名和 密码皆为172,连接速率为9600) AT+CLPORT="TCP","3030" AT+CIPSERVER (启动SERVER功能,开始侦听3030端口) AT+CIFSR(获取本地IP地址) AT+CLPORT="TCP","3000" 第二台: AT+CIPCSGP=0,"17201","172","172", 2 (CSD方式,置为CSD连接,拨17201,用户名和 密码皆为172,连接速率为9600) AT+CLPORT="TCP","2020" AT+CIPSERVER (启动SERVER功能,开始侦听2020端口) AT+CIFSR(获取本地IP地址) AT+CLPORT="TCP","2000" SIMCOM Application Note for SIM100 TCP/IP AT Commands 8 第一台: AT+CIPSTART="TCP","REMOTE IP ADDR","2020" (REMOTEIP ADDR可由对方发SMS 得到) 已经建立连接 第二台: AT+CIPSTART="TCP","REMOTE IP ADDR","3030" 已经建立连接 之后任何一方就可以向另外一方发数据(用AT+CIPSEND发送) SIMCOM Application Note for SIM100 TCP/IP AT Commands 9 11. 如何使用SIM100TCP实现多个模块之间的互相通信 目前SIM100TCP不支持多个TCP同时连接,但是可以用UDP方式来实现.可以用模块启 动UDP功能,这样模快就可以接收来自远端的UDP包,可以通过收到的UDP包获取发送方的 IP地址和端口号,然后本模块就可以作出应答,回应一个UDP包,实现相互的通讯.下面是 一个简单的例子: 假设A,B,C三个模块要相互通信,可以用以下的方式实现(以GPRS方式为例) 1:A,B,C分别初始化如下: AT+CIPCSGP=1,"cmnet"(GPRS方式) AT+CLPORT="UDP","端口号"(设置UDP端口号) AT+CSTT (启动TCP任务,成功后返回OK) AT+CIICR (激活场景,成功后返回OK) AT+CIFSR (获得本地IP地址) AT+CIPSTART="UDP","REMOTE IP ADDR","REMOTE PORT"(注册UDP 连接,其中"REMOTE IP ADDR"和"REMOTE PORT"可以随便设置一个,成功后返回 CONNECT OK) 2:若A要向B发送数据,只要这样就可以了: AT+CIPCLOSE (注销当前UDP连接) AT+CIPSTART="UDP","B的IP地址","B的端口号"(注册新的UDP连接) (成功后会返回CONNECTOK和OK) AT+CIPSEND (发送数据) 若C有数据发给A,则A自动接收到,同时可以获得C的IP地址和端口号,这样A就可以 发UDP包给C了,具体过程跟上面类似. SIMCOM Application Note for SIM100 TCP/IP AT Commands 10 12. TCP连接出错后应该如何处理 若在建立TCP连接的过程中出现错误或者SERVER断线,则先用AT+CIPCLOSE关闭 TCP连接(本地IP地址不变),然后再重新建立连接.若其他时候可以用AT+CIPSHUT关闭 PDP Context(本地IP地址会改变),然后重新建立连接. 13. 如何建立一个点对点的CSD连接 首先要确保SIM卡已开通CSD业务,直接呼叫对方号码(数据呼叫,非语音呼叫),对 方用ATA应答,然后会返回CONNECT 9600,这时候双方进入完全的透明数据传输状态,双 方都可以收发数据,发+++后返回命令态(注意+++的前后0.5秒内必须无数据传输才能返回 命令态),ATO可返回数据态.ATH可结束本次CSD连接.
      如何使用TCP向远端SERVER传输数据

      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指令

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

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

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

          热门文章

          文章分类