tcp udp 的echo脚本

来源:互联网 发布:php开源论坛 wap 编辑:程序博客网 时间:2024/05/20 05:45

============================================================
博文原创,转载请声明出处
电子咖啡(原id蓝岩)
============================================================
在进行tcp和udp的通信测试时候,需要对应的测试脚本作支持,搜集了一些,和大家分享。


echo_tcp_server.h, tcp的echo程序,建立tcp连接后,自己发送什么消息,此程序回复同样消息。gcc编译后即可使用

echo_udp_server.py  udp 服务器端的echo程序,自己发送什么消息,此程序回复同样消息。

echo_udp_client.py  udp客户端echo程序。

附程序如下——————————————————

echo_tcp_server.c

echo_tcp_server.c#include<stdio.h>#include<unistd.h>#include<sys/socket.h>#include<arpa/inet.h>#defineLISTEN_PORT5000#definetrue1#definefalse0int listen_sock, comm_sock;struct sockaddr_in serv_addr, clnt_addr;int server_init();int is_accept();int handle_echo();int main(void){server_init();while(1){if(is_accept()){handle_echo();}}return 0;}int is_accept(){int clnt_addr_len = sizeof(clnt_addr);if((comm_sock = accept(listen_sock, (struct sockaddr *)&clnt_addr, &clnt_addr_len)) < 0){return false;}else{printf("Client(IP:%s) connected.\n", inet_ntoa(clnt_addr.sin_addr));return true;}}#defineBUFFER_SIZE32int handle_echo(){char buffer[BUFFER_SIZE];int recv_len;int goon = true;while(goon){if((recv_len = recv(comm_sock, buffer, BUFFER_SIZE, 0)) < 0){perror("recv() error.");exit(-1);}else if(recv_len == 0){goon = false;}else{if(send(comm_sock, buffer, recv_len, 0) != recv_len){perror("send() error.");exit(-1);}}}}int server_init(){// create listen socketif((listen_sock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP)) < 0){perror("listen_socket error.");exit(-1);}// init the serv_addrmemset(&serv_addr, 0, sizeof(serv_addr));serv_addr.sin_family = AF_INET;serv_addr.sin_addr.s_addr = htonl(INADDR_ANY);serv_addr.sin_port = htons(LISTEN_PORT);// bind listen socket with server addressif(bind(listen_sock, (struct sockaddr *)&serv_addr, sizeof(serv_addr)) < 0){perror("bind() error.");exit(-1);}// listen on the port if(listen(listen_sock, 10) < 0){perror("listen() error.");exit(-1);}}
echo_udp_server.py

#!/usr/bin/env python """A simple echo server (UDP)""" import socket # define servr propertieshost = ''port = 9003size = 8192 # configure server socketsock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)sock.bind((host, port)) # wait for connections# terminate with try:  while True:    data, address = sock.recvfrom(size)    print "datagram from", address,data    #print "data is ",data    sock.sendto(data, address)finally:  sock.close() 

echo_udp_client.py

#!/usr/bin/env python """A simple echo client (UDP)""" import socket # configure the clientport = 9003host = 'localhost'size = 8192timeout = 8testMsg = "This is my //77text123" # initialize sockettry:  sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)  sock.settimeout(timeout)  sock.sendto(testMsg, (host, port))  response = sock.recv(8192)  sock.close()  print response  if response == testMsg:    print "connection is working fine."  else:    print "connection error occured." except:  print "cannot reach your server"