tcp传输指令(tcp可靠传输的实现)

      最后更新:2024-03-12 05:44:57 手机定位技术交流文章

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

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

      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和UDP传输

      划分为使用TCP端口(面向连接如打电话)和使用UDP端口(无连接如写信)两种。网络中可以被命名和寻址的通信端口是操作系统的一种可分配资源。由网络OSI(开放系统互联参考模型,OpenSystemInterconnectionReferenceModel)七层协议可知,传输层与网络层最大的区别是传输层提供进程通信能力,网络通信的最终地址不仅包括主机地址,还包括可描述进程的某种标识。所以TCP/IP协议提出的协议端口,可以认为是网络通信进程的一种标识符。应用程序(调入内存运行后一般称为:进程)通过系统调用与某端口建立连接(binding,绑定)后,传输层传给该端口的数据都被相应的进程所接收,相应进程发给传输层的数据都从该端口输出。在TCP/IP协议的实现中,端口操作类似于一般的I/O操作,进程获取一个端口,相当于获取本地唯一的I/O文件,可以用一般的读写方式访问类似于文件描述符,每个端口都拥有一个叫端口号的整数描述符,用来区别不同的端口。由于TCP/IP传输层的TCP和UDP两个协议是两个完全独立的软件模块,因此各自的端口号也相互独立。如TCP有一个255号端口,UDP也可以有一个255号端口,两者并不冲突。端口号有两种基本分配方式:第一种叫全局分配这是一种集中分配方式,由一个公认权威的中央机构根据用户需要进行统一分配,并将结果公布于众,第二种是本地分配,又称动态连接,即进程需要访问传输层服务时,向本地操作系统提出申请,操作系统返回本地唯一的端口号,进程再通过合适的系统调用,将自己和该端口连接起来(binding,绑定)。TCP/IP端口号的分配综合了以上两种方式,将端口号分为两部分,少量的作为保留端口,以全局方式分配给服务进程。每一个标准服务器都拥有一个全局公认的端口叫周知口,即使在不同的机器上,其端口号也相同。剩余的为自由端口,以本地方式进行分配。TCP和UDP规定,小于256的端口才能作为保留端口。按端口号可分为3大类:(1)公认端口(WellKnownPorts):从0到1023,它们紧密绑定(binding)于一些服务。通常这些端口的通讯明确表明了某种服务的协议。例如:80端口实际上总是HTTP通讯。(2)注册端口(RegisteredPorts):从1024到49151。它们松散地绑定于一些服务。也就是说有许多服务绑定于这些端口,这些端口同样用于许多其它目的。例如:许多系统处理动态端口从1024左右开始。(3)动态和/或私有端口(Dynamicand/orPrivatePorts):从49152到65535。理论上,不应为服务分配这些端口。实际上,机器通常从1024起分配动态端口。但也有例外:SUN的RPC端口从32768开始。系统管理员可以"重定向"端口:一种常见的技术是把一个端口重定向到另一个地址。例如默认的HTTP端口是80,不少人将它重定向到另一个端口,如8080。如果是这样改了,要访问本文就应改用这个地址.cn:8080。端口漏洞:8080端口可以被各种病毒程序所利用,比如BrownOrifice(BrO)特洛伊木马病毒可以利用8080端口完全遥控被感染的计算机。另外,RemoConChubo,RingZero木马也可以利用该端口进行攻击。操作建议:一般我们是使用80端口进行网页浏览的,为了避免病毒的攻击,我们可以关闭该端口。端口:21服务:FTP说明:FTP服务器所开放的端口,用于上传、下载。最常见的攻击者用于寻找打开anonymous的FTP服务器的方法。这些服务器带有可读写的目录。木马DolyTrojan、Fore、InvisibleFTP、WebEx、WinCrash和BladeRunner所开放的端口。端口:22服务:Ssh说明:PcAnywhere建立的TCP和这一端口的连接可能是为了寻找ssh。这一服务有许多弱点,如果配置成特定的模式,许多使用RSAREF库的版本就会有不少的漏洞存在。端口:23服务:Telnet说明:远程登录,入侵者在搜索远程登录UNIX的服务。大多数情况下扫描这一端口是为了找到机器运行的操作系统。还有使用其他技术,入侵者也会找到密码。木马TinyTelnetServer就开放这个端口。端口:25服务:SMTP说明:SMTP服务器所开放的端口,用于发送邮件。入侵者寻找SMTP服务器是为了传递他们的SPAM。入侵者的帐户被关闭,他们需要连接到高带宽的E-MAIL服务器上,将简单的信息传递到不同的地址。木马Antigen、EmailPasswordSender、HaebuCoceda、ShtrilitzStealth、WinPC、WinSpy都开放这个端口。端口:80服务:HTTP说明:用于网页浏览。木马Executor开放此端口。端口:102服务:Messagetransferagent(MTA)-X.400overTCP/IP说明:消息传输代理。端口:109服务:PostOfficeProtocol-Version3说明:POP3服务器开放此端口,用于接收邮件,客户端访问服务器端的邮件服务。POP3服务有许多公认的弱点。关于用户名和密码交换缓冲区溢出的弱点至少有20个,这意味着入侵者可以在真正登陆前进入系统。成功登陆后还有其他缓冲区溢出错误。端口:110服务:SUN公司的RPC服务所有端口说明:常见RPC服务有rpc.mountd、NFS、rpc.statd、rpc.csmd、rpc.ttybd、amd等端口:119服务:NetworkNewsTransferProtocol说明:NEWS新闻组传输协议,承载USENET通信。这个端口的连接通常是人们在寻找USENET服务器。多数ISP限制,只有他们的客户才能访问他们的新闻组服务器。打开新闻组服务器将允许发/读任何人的帖子,访问被限制的新闻组服务器,匿名发帖或发送SPAM。端口:135服务:LocationService说明:Microsoft在这个端口运行DCERPCend-pointmapper为它的DCOM服务。这与UNIX111端口的功能很相似。使用DCOM和RPC的服务利用计算机上的end-pointmapper注册它们的位置。远端客户连接到计算机时,它们查找end-pointmapper找到服务的位置。HACKER扫描计算机的这个端口是为了找到这个计算机上运行ExchangeServer吗?什么版本?还有些DOS攻击直接针对这个端口。端口:137、138、139服务:NETBIOSNameService说明:其中137、138是UDP端口,当通过网上邻居传输文件时用这个端口。而139端口:通过这个端口进入的连接试图获得NetBIOS/SMB服务。这个协议被用于windows文件和打印机共享和SAMBA。还有WINSRegisrtation也用它。端口:161服务:SNMP说明:SNMP允许远程管理设备。所有配置和运行信息的储存在数据库中,通过SNMP可获得这些信息。许多管理员的错误配置将被暴露在Internet。Cackers将试图使用默认的密码public、private访问系统。他们可能会试验所有可能的组合。SNMP包可能会被错误的指向用户的网络端口:177服务:XDisplayManagerControlProtocol说明:许多入侵者通过它访问X-windows操作台,它同时需要打开6000端口。端口:389服务:LDAP、ILS说明:轻型目录访问协议和NetMeetingInternetLocatorServer共用这一端口。限制端口防非法入侵[分享]一般来说,我们采用一些功能强大的反黑软件和防火墙来保证我们的系统安全,本文拟用一种简易的法——通过限制端口来帮助大家防止非法入侵。非法入侵的方式简单说来,非法入侵的方式可粗略分为4种:1、扫描端口,通过已知的系统Bug攻入主机。2、种植木马,利用木马开辟的后门进入主机。3、采用数据溢出的手段,迫使主机提供后门进入主机。4、利用某些软件设计的漏洞,直接或间接控制主机。非法入侵的主要方式是前两种,尤其是利用一些流行的黑客工具,通过第一种方式攻击主机的情况最多、也最普遍;而对后两种方式来说,只有一些手段高超的黑客才利用,波及面并不广泛,而且只要这两种问题一出现,软件服务商很快就会提供补丁,及时修复系统。对于个人用户来说,您可以限制所有的端口,因为您根本不必让您的机器对外提供任何服务;而对于对外提供网络服务的服务器,我们需把必须利用的端口(比如WWW端口80、FTP端口21、邮件服务端口25、110等)开放,其他的端口则全部关闭。这里,对于采用Windows2000或者WindowsXP的用户来说,不需要安装任何其他软件,可以利用“TCP/IP筛选”功能限制服务器的端口。具体设置如下:1、右键点击“网上邻居”,选择“属性”,然后双击“本地连接”(如果是拨号上网用户,选择“我的连接”图标),弹出“本地连接状态”对话框。2、点击[属性]按钮,弹出“本地连接属性”,选择“此连接使用下列项目”中的“Internet协议(TCP/IP)”,然后点击[属性]按钮。3、在弹出的“Internet协议(TCP/IP)”对话框中点击[高级]按钮。在弹出的“高级TCP/IP设置”中,选择“选项”标签,选中“TCP/IP筛选”,然后点击[属性]按钮。4、在弹出的“TCP/IP筛选”对话框里选择“启用TCP/IP筛选”的复选框,然后把左边“TCP端口”上的“只允许”选上。这样,您就可以来自己添加或删除您的TCP或UDP或IP的各种端口了。添加或者删除完毕,重新启动机器以后,您的服务器就被保护起来了。最后,提醒个人用户,如果您只上网浏览的话,可以不添加任何端口。但是要利用一些网络联络工具,比如OICQ的话,就要把“4000”这个端口打开,同理,如果发现某个常用的网络工具不能起作用的时候,请搞清它在您主机所开的端口,然后在“TCP/IP“里把此端口打开以上来源于网络,不过分析得很好了相同点:都处于传输层不同点:TCP~面向连接、可靠、传输慢、保证数据的顺序UDP~面向无连接、不可靠、传输快、数据按照不同路径到,不保证数据顺序且两者传输的模式不一样
      面向连接的TCP “面向连接”就是在正式通信前必须要与对方建立起连接。比如你给别人打电话,必须等线路接通了、对方拿起话筒才能相互通话。TCP(Transmission Control Protocol,传输控制协议)是基于连接的协议,也就是说,在正式收发数据前,必须和对方建立可靠的连接。一个TCP连接必须要经过三次“对话”才能建立起来,其中的过程非常复杂,我们这里只做简单、形象的介绍,你只要做到能够理解这个过程即可。我们来看看这三次对话的简单过程:主机A向主机B发出连接请求数据包:“我想给你发数据,可以吗?”,这是第一次对话;主机B向主机A发送同意连接和要求同步(同步就是两台主机一个在发送,一个在接收,协调工作)的数据包:“可以,你什么时候发?”,这是第二次对话;主机A再发出一个数据包确认主机B的要求同步:“我现在就发,你接着吧!”,这是第三次对话。三次“对话”的目的是使数据包的发送和接收同步,经过三次“对话”之后,主机A才向主机B正式发送数据。TCP协议能为应用程序提供可靠的通信连接,使一台计算机发出的字节流无差错地发往网络上的其他计算机,对可靠性要求高的数据通信系统往往使用TCP协议传输数据。面向非连接的UDP协议“面向非连接”就是在正式通信前不必与对方先建立连接,不管对方状态就直接发送。这与现在风行的手机短信非常相似:你在发短信的时候,只需要输入对方手机号就OK了。UDP(User Data Protocol,用户数据报协议)是与TCP相对应的协议。它是面向非连接的协议,它不与对方建立连接,而是直接就把数据包发送过去!UDP适用于一次只传送少量数据、对可靠性要求不高的应用环境。比如,我们经常使用“ping”命令来测试两台主机之间TCP/IP通信是否正常,其实“ping”命令的原理就是向对方主机发送UDP数据包,然后对方主机确认收到数据包,如果数据包是否到达的消息及时反馈回来,那么网络就是通的。例如,在默认状态下,一次“ping”操作发送4个数据包(如图2所示)。大家可以看到,发送的数据包数量是4包,收到的也是4包(因为对方主机收到后会发回一个确认收到的数据包)。这充分说明了UDP协议是面向非连接的协议,没有建立连接的过程。正因为UDP协议没有连接的过程,所以它的通信效果高;但也正因为如此,它的可靠性不如TCP协议高。QQ就使用UDP发消息,因此有时会出现收不到消息的情况。 TCP协议和UDP协议各有所长、各有所短,适用于不同要求的通信环境。
      如何实现TCP和UDP传输

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

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

      本文由 在线网速测试 整理编辑,转载请注明出处,原文链接:https://www.wangsu123.cn/news/300038.html

          热门文章

          文章分类