5300水货网络彩信怎么设置我怎么找不到服务器设置啊

5300水货网络彩信怎么设置我怎么找不到服务器设置啊,第1张

你要先开通GPRS上网
彩信设置:
1、选择 设置--配置设置--预设配置设置,更改为"个人配置"。
2、更改后返回配置设置菜单,选择"个人配置设置"。进入"个人帐号"选择" *** 作"--"新增"--"彩信" (如果是多媒体信息就选择多媒体信息)
3、设置:帐号名称:彩信
服务器地址:>

完成初始化设置以后,W5300可以以TCP、UDP、IPRAW或MACRAW的方式打开SOCKET发送或接
数据。W5300支持8个SOCKET同时且独立地工作。在本章将描述每种通信方式的工作方法。 TCP是一种连接通信的协议,在TCP模式,首先要根据IP地址和端口号与对端建立SOCKET连接。通
过连接的SOCKET发送和接收数据。
建立SOCKET的连接有“TCP服务器”和“TCP客户端”之分。区分它们的方法是谁首先发送连接请
求(SYS数据包)。“TCP服务器”等待对端的连接请求,当收到连接请求时建立SOCKET连接(被动打
开)。“TCP客户端”主动发出连接请求,与对端建立连接(主动打开)。
SOCKET初始化
为了实现TCP通信,需要对SOCKET进行初始化设置并打开SOCKET。为了打开SOCKET,选择其中
的一个SOCKET(被选择的SOCKET称之为SOCKETn),通过Sn_MR(P3:P0)和Sn_PORTR分别设置通
信协议和本机端口号(在TCP服务器模式,称之为侦听端口号),然后执行OPEN命令。执行完OPEN命
令后,如果Sn_SSR改变为SOCK_INIT,则SOCKET的初始化设置完成。
在TCP服务器和TCP客户端模式,SOCKET初始化的过程都是相同的。下面的方法是将SOCKET初始
化为TCP模式。
{
START:
Sn_MR = 0x0001; / sets TCP mode /
Sn_PORTR = source_port; / sets source port number /
Sn_CR = OPEN; / sets OPEN command /
/ wait until Sn_SSR is changed to SOCK_INIT /
if (Sn_SSR != SOCK_INIT) Sn_CR = CLOSE; goto START;
}
如果接收到对端的数据字节数为偶数,Sn_MR(ALIGN)置‘1’。当Sn_MR(ALIGN)=1时,W5300不
需要增加TCP模式的PACKET-INFO,而只将数据保存在SOCKETn的内部RX存储器。这样将减少主机对
SOCKET_INFO的额外处理,提高系统性能。(在前面的代码中,Sn_MR=0x0101可能会被Sn_MR=0x0001
取代)
侦听
运行LISTEN命令将W5300设置为TCP服务器模式
{
/ listen SOCKET /
Sn_CR = LISTEN;
/ wait until Sn_SSR is changed to SOCK_LISTEN /
If (Sn_SSR != SOCK_LISTEN) Sn_CR = CLOSE; goto START;
}
建立连接?
当Sn_SSR改变为SOCK_LISTEN状态时,如果收到SYN数据包,那么Sn_SSR将改变为
SOCK_SYNRECV。发送了SYN/ACK数据包后,SOCKETn就建立了连接。SOCKETn建立连接以后就可
以进行数据通信。有两种方法可以检验是否建立SOCKETn的连接。
第1种方法
{
if (Sn_IR(CON) == ‘1’) Sn_IR(CON) = ‘1’; goto ESTABLISHED stage;
/ In this case, if the interrupt of SOCKETn is activated, interrupt occurs Refer to IR, IMR
Sn_IMR and Sn_IR /
}
第二种方法
{
if (Sn_SSR == SOCK_ESTABLISHED) goto ESTABLISHED stage;
}
建立连接:接收到数据?
检查是否接收到对端发送来的数据。
第1种方法
{
if (Sn_IR(RECV) == ‘1’) Sn_IR(RECV) = ‘1’; goto Receiving Process stage;
/ In this case, if the interrupt of SOCKETn is activated, interrupt occurs Refer to IR, IMR
Sn_IMR and Sn_IR /
}
第2种方法
{
if (Sn_RX_RSR != 0x00000000) goto Receiving Process stage;
}
第1种方法,当SOCKETn接收到数据包时,Sn_IR(RECV)将置‘1’。这时如果主机还没有处理上次
接收数据包的Sn_IR(RECV),而W5300又收到下一次的数据包,主机保持前一次的Sn_IR(RECV),不能
识别下一次数据包的Sn_IR(RECV),因此,如果主机没有能力处理所有数据包的Sn_IR(RECV),建议不
采用这种方法。
建立连接:接收数据处理
当Sn_MR(ALIGN)=0时,数据包中包含PACKET-INFO和数据的数据。在Sn_ME(ALIGN)=1时,TCP
数据只有数据包而没有PACKET-INFO。
在TCP模式,如果对端发送的数据的大小超过SOCKETn的RX存储器的剩余空间,那么W5300将不能
接收数据,这时的W5300将继续保持连接,并等待RX存储器的剩余空间大于数据长度。
{
/ first, check Sn_MR(ALIGN) /
if (Sn_MR(ALIGN) == ‘0’)
{
pack_size = Sn_RX_FIFOR; / extract size of DATA packet from internal RX memory /
}
else
{
pack_size = Sn_RX_RSR; / check the total received data size /
}
/ calculate the read count of Sn_RX_FIFOR /
if (pack_size is odd ) read_cnt = (pack_size + 1) / 2;
read_cnt = pack_size / 2;
/ extract DATA packet from internal RX memory /
for( i = 0; i < read_cnt; i++)
{
data_buf[i] = Sn_RX_FIFOR; / data_buf is array of 16bit /
}
/ set RECV command /
Sn_CR = RECV;
}
注意:当SOCKETn只用于接收数据而不发送数据时,主机不能快速接收处理数据将导致使内部RX存
储器溢出。
在这种情况下,即使W5300的窗口尺寸(接收数据的最大尺寸)不为0,对端误以为窗口尺寸为0而不再发送数据,等待窗口尺寸增加。这样就会降低W5300接收数据的性能。为了解决这个问题,主机首先处理内部RX存储器接收的数据,同时通知对端,W5300的窗口尺寸增加了已经接收数据的大小。针对上面代码,在RECV命令之后增加以下的代码。
/ set RECV command /
Sn_CR = RECV;
/ Add the code that notifies the update of window size to the peer /
/ check the received data process to finish or not /
if(Sn_RX_RSR == 0) / send the window-update packet when the window size is full /
{ / Sn_RX_RSR can be compared with another value instead of „0‟, according to the host
performance of receiving data /
Sn_TX_WRSR = 0x00000001; / set Dummy Data size to Sn_TX_WRSR /
Sn_CR = SEND; / set SEND command /
while(Sn_CR != 0x00); / check SEND command completion /
while(Sn_IR(SENDOK) == 0); / wait for SEND OK /
Sn_IR(SENDOK) =1; / Clear SENDOK bit /
}
建立连接:发送数据?/发送处理
将数据通过Sn_TX_FIFOR写入到内部TX存储器后,W5300将试着把数据发送到对端。发送数据的大
小不能比分配给该SOCKETn的内部TX存储器空间大。如果发送数据的尺寸比MSS大,W5300将自动根据
MSS分片,然后再发送。
为了下一次数据的发送,主机必须检查上次SEND命令是否执行完毕。如果上一次的SEND命令还没
有执行完而又开始下一次的SEND命令,将可能产生各种各样的错误。数据越大,执行SEND命令所需要
的时间就会越长。所以要想提高发送效率,适当将数据分为合适的大小发送。
{
/ first, get the free TX memory size /
FREESIZE:
get_free_size = Sn_TX_FSR;
if (Sn_SSR != SOCK_ESTABLISHED && Sn_SSR != SOCK_CLOSE_WAIT) goto CLOSED
state;
if (get_free_size < send_size) goto FREESIZE;
/ calculate the write count of Sn_TX_FIFOR /
if (send_size is odd ) write_cnt = (send_size + 1) / 2;
else write_cnt = send_size / 2;
/ copy data to internal TX memory /
for (i = 0; i < write_cnt; i++)
{
Sn_TX_FIFOR = data_buf[i]; / data_buf is array of 16bit /
}
/ check previous SEND command completion /
if (is first send ) ; / skip check Sn_IR(SENDOK) /
else
{
while(Sn_IR(SENDOK)==‘0’)
{
if(Sn_SSR == SOCK_CLOSED) goto CLOSED state; / check connection establishment /
}
Sn_IR(SENDOK) = ‘1’; / clear previous interrupt of SEND completion /
}
/ sets transmission data size to Sn_TX_WRSR /
Sn_TX_WRSR = send_size;
/ set SEND command /
Sn_CR = SEND;
}
建立连接:接收到FIN
它检查是否接收到断开连接的请求(FIN数据包)。检查如下:
第1种方法
{
if (Sn_IR(DISCON) == ‘1’) Sn_IR(DISCON)=‘1’; goto CLOSED stage;
/ In this case, if the interrupt of SOCKETn is activated, interrupt occurs Refer to IR, IMR
Sn_IMR and Sn_IR /
}
第2种方法
{
if (Sn_SSR == SOCK_CLOSE_WAIT) goto CLOSED stage;
}
建立连接:断开连接?/断开连接处理
如果不再需要进行数据通信,或收到FIN数据包,那么SOCKET的连接应该断开。
{
/ set DISCON command /
Sn_CR = DISCON;
}
建立连接:关闭端口?
它检查SOCKETn是否通过DISCON或CLOSE命令断开连接或关闭端口。
第1种方法
{
if (Sn_IR(DISCON) == ‘1’) goto CLOSED stage;
/ In this case, if the interrupt of SOCKETn is activated, interrupt occurs Refer to IR, IMR
Sn_IMR and Sn_IR /
}
第2种方法
{
if (Sn_SSR == SOCK_CLOSED) goto CLOSED stage;
}
建立连接:超时
超时可能发生在TCP数据包传输过程中,如连接请求(SYN数据包)或其响应数据包(SYN/ACK数
据包)、数据(DATA数据包)或其响应数据包(DATA/ACK数据包)、断开连接请求(FIN数据包)或其
响应数据包(FIN/ACK数据包)等等。如果以上的数据包在RTR和RCR设定的时间内没有发送出去,那么
将产生TCP超时,且Sn_SSR将改变为SOCK_CLOSED状态。
TCP超时检查如下:
第1种方法:
{
if (Sn_IR(TIMEOUT bit) == ‘1’) Sn_IR(TIMEOUT)=‘1’; goto CLOSED stage;
/ In this case, if the interrupt of SOCKETn is activated, interrupt occurs Refer to IR, IMR
Sn_IMR and Sn_IR /
}
第2种方法:
{
if (Sn_SSR == SOCK_CLOSED) goto CLOSED stage;
}
SOCKET关闭
SOCKETn经过断开连接处理或由于超时而断开连接,它用于关闭断开连接的SOCKETn。主机也可以不进
行断开连接处理而直接关闭SOCKETn。
{
/ clear remained interrupts /
Sn_IR = 0x00FF;
IR(n) = ‘1’;
/ set CLOSE command /
Sn_CR = CLOSE;
} 它发送连接请求(SYN数据包)到对端。在与对端SOCKET建立连接的过程中可能会出现ARP超时,
或TCP连接超时。
{
Sn_DIPR = server_ip; / set TCP SERVER IP address/
Sn_DPORTR = server_port; / set TCP SERVER listen port number/
Sn_CR = CONNECT; / set CONNECT command /
}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/13422514.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-08-02
下一篇 2023-08-02

发表评论

登录后才能评论

评论列表(0条)

保存