linux网络设备测试-----socket
2015-04-10 16:57
253 查看
/*******************************
* 客户端程序 *
********************************/
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>
#include <netdb.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <sys/socket.h>
int main(int argc,char *argv[])
{
int sockfd,numbytes;
char buf[100];
struct hostent *he;
struct sockaddr_in their_addr;
//从输入的命令行的第2个参数获取服务器的IP地址
he = gethostbyname(argv[1]);
//客户端建立TCP协议的socket套接字描述符
if((sockfd = socket(AF_INET,SOCK_STREAM,0))==-1)
{
perror("socket");
exit(1);
}
//客户端初始化结构体,连接到服务器的4321端口
their_addr.sin_family = AF_INET;
their_addr.sin_port = htons(4321);
their_addr.sin_addr = *((struct in_addr *)he->h_addr);
bzero(&(their_addr.sin_zero),8);
//向服务器发起连接
if(connect(sockfd,(struct sockaddr *)&their_addr,sizeof(struct sockaddr_in))==-1)
{
perror("connect");
exit(1);
}
//向服务器发送字符串"hello!"
if(send(sockfd,"Hello! I am Client.",100,0)==-1)
{
perror("send");
exit(1);
}
//接收从服务器返回的信息
if(recv(sockfd,buf,100,0)==-1)
{
perror("recv");
exit(1);
}
printf("result: %s \n",buf);
/*通信结束*/
close(sockfd);
return 0;
}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
makefile:
EXTRA_LIBS += -lpthread
CC=gcc
EXEC = ./client
OBJS = client.o
all: $(EXEC)
$(EXEC): $(OBJS)
$(CC) $(LDFLAGS) -o $@ $(OBJS) $(EXTRA_LIBS)
install:
$(EXP_INSTALL) $(EXEC) $(INSTALL_DIR)
clean:
-rm -f $(EXEC) *.elf *.gdb *.o
_____________________________________________________
/*******************************
* server.c *
********************************/
#include <sys/types.h>//socket
#include <sys/socket.h>//socket
#include <stdio.h>//printf
#include <stdlib.h>//exit
#include <errno.h>
#include <string.h>//bzero
//#include <unistd.h>
#include <netinet/in.h>//sockaddr_in
#define SERVER_PORT 4321
int main()
{
int sockfd,new_fd;
struct sockaddr_in my_addr;
struct sockaddr_in their_addr;
int sin_size;
char buff[100];
//服务器建立TCP协议的socket套接字描述符
if((sockfd = socket(AF_INET,SOCK_STREAM,0))==-1)
{
perror("socket");
exit(1);
}
printf("socket success!,sockfd=%d\n",sockfd);
//初始化sockaddr结构体,绑定4321端口
my_addr.sin_family = AF_INET;
my_addr.sin_port = htons(SERVER_PORT);
my_addr.sin_addr.s_addr = INADDR_ANY;
bzero(&(my_addr.sin_zero),8);
//绑定套接字描述符sockfd
if(bind(sockfd,(struct sockaddr *)&my_addr,sizeof(struct sockaddr_in))==-1)
{
perror("bind");
exit(1);
}
printf("bind success!\n");
//创建监听套接字描述符sockfd
if(listen(sockfd,10)==-1)
{
perror("listen");
exit(1);
}
printf("listening....\n");
//服务器阻塞监听套接字,等待客户端程序连接
while(1)
{
sin_size = sizeof(their_addr);
// 如果创建连接,将产生一个全新的套接字
if((new_fd = accept(sockfd,(struct sockaddr *)&their_addr,&sin_size))==-1)
{
perror("accept");
exit(1);
}
// bzero(buff, 100);
//生成一个子进程来完成和客户端的会话,父进程继续监听
if(!fork())
{
//读取客户端发来的信息
if(recv(new_fd,buff,100,0)==-1)
{
perror("recv");
exit(1);
}
printf(" %s\n",buff);
//发送信息到客户端
if(send(new_fd,"Welcome,This is Server.",50,0)==-1)
perror("send");
/*本次通信结束*/
close(new_fd);
exit(0);
}
/*下一个循环*/
}
close(sockfd);
}
/*
root@1[server]# ./server
server is run: Success
Hello! Client connect.
root@2[client]# .client 192.168.1.99
result: Welcome,This is Server.
*/
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
makefile:
EXTRA_LIBS += -lpthread
CC = arm-poky-linux-gnueabi-gcc
EXEC = ./server
OBJS = server.o
all: $(EXEC)
$(EXEC): $(OBJS)
$(CC) $(LDFLAGS) -o $@ $(OBJS) $(EXTRA_LIBS)
install:
$(EXP_INSTALL) $(EXEC) $(INSTALL_DIR)
clean:
-rm -f $(EXEC) *.elf *.gdb *.o
* 客户端程序 *
********************************/
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>
#include <netdb.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <sys/socket.h>
int main(int argc,char *argv[])
{
int sockfd,numbytes;
char buf[100];
struct hostent *he;
struct sockaddr_in their_addr;
//从输入的命令行的第2个参数获取服务器的IP地址
he = gethostbyname(argv[1]);
//客户端建立TCP协议的socket套接字描述符
if((sockfd = socket(AF_INET,SOCK_STREAM,0))==-1)
{
perror("socket");
exit(1);
}
//客户端初始化结构体,连接到服务器的4321端口
their_addr.sin_family = AF_INET;
their_addr.sin_port = htons(4321);
their_addr.sin_addr = *((struct in_addr *)he->h_addr);
bzero(&(their_addr.sin_zero),8);
//向服务器发起连接
if(connect(sockfd,(struct sockaddr *)&their_addr,sizeof(struct sockaddr_in))==-1)
{
perror("connect");
exit(1);
}
//向服务器发送字符串"hello!"
if(send(sockfd,"Hello! I am Client.",100,0)==-1)
{
perror("send");
exit(1);
}
//接收从服务器返回的信息
if(recv(sockfd,buf,100,0)==-1)
{
perror("recv");
exit(1);
}
printf("result: %s \n",buf);
/*通信结束*/
close(sockfd);
return 0;
}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
makefile:
EXTRA_LIBS += -lpthread
CC=gcc
EXEC = ./client
OBJS = client.o
all: $(EXEC)
$(EXEC): $(OBJS)
$(CC) $(LDFLAGS) -o $@ $(OBJS) $(EXTRA_LIBS)
install:
$(EXP_INSTALL) $(EXEC) $(INSTALL_DIR)
clean:
-rm -f $(EXEC) *.elf *.gdb *.o
_____________________________________________________
/*******************************
* server.c *
********************************/
#include <sys/types.h>//socket
#include <sys/socket.h>//socket
#include <stdio.h>//printf
#include <stdlib.h>//exit
#include <errno.h>
#include <string.h>//bzero
//#include <unistd.h>
#include <netinet/in.h>//sockaddr_in
#define SERVER_PORT 4321
int main()
{
int sockfd,new_fd;
struct sockaddr_in my_addr;
struct sockaddr_in their_addr;
int sin_size;
char buff[100];
//服务器建立TCP协议的socket套接字描述符
if((sockfd = socket(AF_INET,SOCK_STREAM,0))==-1)
{
perror("socket");
exit(1);
}
printf("socket success!,sockfd=%d\n",sockfd);
//初始化sockaddr结构体,绑定4321端口
my_addr.sin_family = AF_INET;
my_addr.sin_port = htons(SERVER_PORT);
my_addr.sin_addr.s_addr = INADDR_ANY;
bzero(&(my_addr.sin_zero),8);
//绑定套接字描述符sockfd
if(bind(sockfd,(struct sockaddr *)&my_addr,sizeof(struct sockaddr_in))==-1)
{
perror("bind");
exit(1);
}
printf("bind success!\n");
//创建监听套接字描述符sockfd
if(listen(sockfd,10)==-1)
{
perror("listen");
exit(1);
}
printf("listening....\n");
//服务器阻塞监听套接字,等待客户端程序连接
while(1)
{
sin_size = sizeof(their_addr);
// 如果创建连接,将产生一个全新的套接字
if((new_fd = accept(sockfd,(struct sockaddr *)&their_addr,&sin_size))==-1)
{
perror("accept");
exit(1);
}
// bzero(buff, 100);
//生成一个子进程来完成和客户端的会话,父进程继续监听
if(!fork())
{
//读取客户端发来的信息
if(recv(new_fd,buff,100,0)==-1)
{
perror("recv");
exit(1);
}
printf(" %s\n",buff);
//发送信息到客户端
if(send(new_fd,"Welcome,This is Server.",50,0)==-1)
perror("send");
/*本次通信结束*/
close(new_fd);
exit(0);
}
/*下一个循环*/
}
close(sockfd);
}
/*
root@1[server]# ./server
server is run: Success
Hello! Client connect.
root@2[client]# .client 192.168.1.99
result: Welcome,This is Server.
*/
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
makefile:
EXTRA_LIBS += -lpthread
CC = arm-poky-linux-gnueabi-gcc
EXEC = ./server
OBJS = server.o
all: $(EXEC)
$(EXEC): $(OBJS)
$(CC) $(LDFLAGS) -o $@ $(OBJS) $(EXTRA_LIBS)
install:
$(EXP_INSTALL) $(EXEC) $(INSTALL_DIR)
clean:
-rm -f $(EXEC) *.elf *.gdb *.o
相关文章推荐
- 嵌入式 linux以及arm平台上网络设备测试工具iperf交叉编译以及使用
- 【Linux device driver】网络设备驱动程序(二)
- 【Linux device driver】网络设备驱动注意的问题(三)
- 实验——LINUX常用网络测试命令
- Linux Socket 网络编程 (IBM网站)第二章
- LINUX常用网络测试命令
- Linux Socket 网络编程 (IBM网站)
- Linux网络设备驱动程序设计----刘文涛
- Linux下将套接口绑定到网络设备的方法
- Linux 网络栈剖析 -- 从 socket 到设备驱动程序
- IP网络设备的测试方法
- 【Linux device driver】网络设备驱动注意的问题(三)
- Linux 网络栈剖析从 socket 到设备驱动程序
- Linux 网络栈剖析 -- 从 socket 到设备驱动程序
- Linux 网络栈剖析 从 socket 到设备驱动程序
- Linux网络管理员手册(4) 第四章 设置串行硬件 Modem连接的通信软件 串行设备概述
- 【Linux device driver】网络设备驱动程序(二)
- linux网络配置、测试及故障诊断方法和工具三
- 使用socket的Linux上的C语言helloworld多线程服务器和客户端测试程序
- Cisco系列网络设备测试命令大全