- 论坛徽章:
- 2
|
服务器端程序:
/**********************************************************
* server.c
* 服务器端程序
*
*********************************************************/
#include
#include
#include
#include
#include
#include
#include
#include
#define BUFSIZE 8192
#define DEFAULT_PORT 5320
enum{CMD_NAME,SRC_PORT};
int execute(char *command,char *buf,int bufmax);
int main(int argc,char *argv[])
{
struct sockaddr_in server; //服务器地址
struct sockaddr_in client; //客户机地址
int len; //sockaddr_in的长度
int port; //服务器端口号
int s; //接收报文用描述符
int s0; //接收连接用描述符
int cn; //接收命令的字数
int sn; //发送报文的字节数
int rn; //接收报文的字节数
char cmd1[BUFSIZE]; //第一个语句命令
char cmd2[BUFSIZE]; //第二个语句命令
char recv_buf[BUFSIZE]; //接收缓冲区
char send_buf[BUFSIZE]; //发送缓冲区
//实际参数的处理(端口号)
if(argc==2){
if((port=atoi(argv[SRC_PORT]))==0){
struct servent *se; //服务信息
if((se=getservbyname(argv[SRC_PORT],"tcp"))!=NULL)
port=(int) ntohs((u_short)se->s_port);
else{
fprintf(stderr,"getservbyname error\n");
exit(EXIT_FAILURE);
}
}
}else
port=DEFAULT_PORT;
//使用TCP协议打开一个套接字
if((s0=socket(AF_INET,SOCK_STREAM,0))");
send(s,send_buf,sn,0);
receive: //流型数据的接收处理
if((rn=recv(s,&recv_buf,1,0))
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define BUFSIZE 8192
#define DEFAULT_PORT 5320
enum {SMD_NAME,DST_IP,DST_PORT};
int main(int argc,char *argv[])
{
struct sockaddr_in server; //服务器地址
unsigned long dst_ip; //服务器IP地址
int port; //端口号
int s; //套接字的描述符
int n; //输入数据的字节数
char buf[BUFSIZE]; //接收缓
char cmd[BUFSIZE]; //发送缓
struct timeval tv; //select超时时间
fd_set readfd; //使用select检索出的描述符
//实际参数的检查
if(argc!=2 && argc!=3){
fprintf(stderr,"Usage: %s hostname[port]\n",argv[0]);
exit(EXIT_FAILURE);
}
//检索服务器的ip地址
if((dst_ip=inet_addr(argv[DST_IP]))==INADDR_NONE){
struct hostent *he; //主机信息
if((he=gethostbyname(argv[DST_IP]))==NULL){
fprintf(stderr,"gethostbyname error\n");
exit(EXIT_FAILURE);
}
memcpy((char *)&dst_ip,(char *)he->h_addr,sizeof(he->h_addr));
}
//检索服务器的端口号
if(argc==3){
if((port=atoi(argv[DST_PORT]))==0){
struct servent * se; //服务信息
if((se=getservbyname(argv[DST_PORT],"tcp"))!=NULL)
port=(int) ntohs((u_short)se->s_port);
else{
fprintf(stderr,"getservbyname error\n");
exit(EXIT_FAILURE);
}
}
}else
port=DEFAULT_PORT;
//使用TCP协议打开一个套接字
if((s=socket(AF_INET,SOCK_STREAM,0))
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/249/showart_1730409.html |
|