1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > udp协议服务器客户端流程图 UDP 协议通信服务器端客户端.doc

udp协议服务器客户端流程图 UDP 协议通信服务器端客户端.doc

时间:2021-03-03 07:45:36

相关推荐

udp协议服务器客户端流程图 UDP 协议通信服务器端客户端.doc

UDP 协议通信服务器端客户端

UDP 协议进行通信

——服务器端

UDP程序实例的基本使用情况和使用方法

这个系统由服务器程序udps和客户及程序udpc两个程序组成,如果从客户机出入一个特定命令,并将这个命令发送到udps中去处理,其执行结果将在客户机的屏幕上显示出来。

1、在执行程序的时候,首先启动一个服务器程序。

端口号是该服务器程序所指定的一个接收包的端口号,客户机必须向该处发送包。在执行上述程序后则执行下面的客户机程序

2、“服务器的IP”也可以使用服务器的主机名或域名。

若两个程序在一台电脑上则服务器IP用127.0.0.1;若不在一台电脑上则服务器的IP用其所在电脑的IP(要求两台电脑能Ping通)。客户端输入的端口号必须是服务器指定的端口。

客户机方可以输入C:\\Windows\\System32\\下可执行的命令

如:help、arp、route print、quit等

从键盘上输入的字符原封不动的发送给服务器程序后,在服务器程序中则执行该字符串相对应的命令,并将执行结果发送给客户机程序。

程序的执行实例和流程图

在这个实例中服务器的IP为白兰兰的IP(125.219.181.97)

在客户机端输入route print命令,则显示服务器的路由寻址表如下(不全)

服务器端的信息

如果输入help后没有任何反应,请确认udpc程序所指定的IP地址是否正确。若正确,再确认一下该IP地址的主机udps是否启动;再确认这些以后,如果执行udpc程序仍没有任何显示,那么请使用ping命令来检查通信是否能够进行,因为UDP协议属于无连接型通信,所以即使发生错误,也很难知道。

如果输入的命令一直是正确的,则只显示第一个命令,其余的都隐藏了。直到输入错误时,服务器端才有错误提示,如:

处理流程

无论是服务器端还是和客户端,首先都要初始化套接口环境再创建一个套接口,利用bind()系统调用来绑定端口号和IP,只有这样才能使用UDP协议发送和接收一个包,但时至次计算机网络中还没有传输任何一个包。

对于客户机而言,如果从键盘上输入命令,在客户机上执行sendto()系统调用,向服务器发送包,那么在发送包之后,客户机则执行recvfrom()系统调用,等待从服务器返回的报文。

如果服务器收到从客户机发来的报文,则调用execute()和chulicom()函数。实质是调用C:\\Windows\\System32\\中的可执行程序。若存在该命令则给予客户机响应,若不存在输出 :您输入错误的命令。若命令不完整,服务器给出提示。

这些操作反复进行,如果在客户机上输入字符串quit,则程序运行结束。

在使用UDP协议时,即使客户机程序运行结束,也不讲这个事实传递给服务器。UDP协议进行的通信的基本模式,只是传递命令的请求包和应答包,并不传输其他包,因此通信方式简单。

客户机的处理 服务器的处理

客户机循环,从键

盘上输入,当不是

EOF的时候反复进行服务器循环接收报文

Recvfrom()

服务器循环

客户机循环

4、UDP服务器源程序及说明

#include

#include

#include

#include

#pragma comment (lib, "ws2_32.lib")

#define BUFSIZE 65500

enum{CMD_NAME,DST_PORT};

int execute(char * command, char *buf,int bufmax);

void chulicom(char *buff ,char *send_buf);

void main(int argc,char *argv[]){

struct sockaddr_in server;

struct sockaddr_in client;

char recv_buf[BUFSIZE];

char send_buf[BUFSIZE];

int resize;

memset(recv_buf,0,sizeof(recv_buf));

memset(send_buf,0,sizeof(send_buf));

char if_;

SOCKET sk;

int serverport=12345;

if (argc==1) /

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。