Chinaunix首页 | 论坛 | 博客
  • 博客访问: 685981
  • 博文数量: 152
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1793
  • 用 户 组: 普通用户
  • 注册时间: 2013-09-12 12:26
个人简介

相信自己,只有不想做的,没有做不到的。

文章分类

全部博文(152)

文章存档

2021年(1)

2015年(2)

2014年(74)

2013年(75)

分类: C#/.net

2013-10-27 10:35:25

client.c--------------->客户端
//./client  server_ip server_port 
int main(int argc, const char *argv[])
{
int connect_fd;
struct sockaddr_in server_addr;
struct sockaddr_in client_addr;

//创建流式套接字
if((connect_fd = socket(AF_INET,SOCK_STREAM,0)) < 0)
{
perror("Fail to socket ");
exit(EXIT_FAILURE);
}


#if 0
bzero(&client_addr,sizeof(server_addr));
client_addr.sin_family = AF_INET;
client_addr.sin_port   = htons(8889);
client_addr.sin_addr.s_addr = inet_addr(argv[1]);


//绑定客户端IP和Port
if(bind(connect_fd,(struct sockaddr *)&client_addr,sizeof(struct sockaddr)) < 0)
{
perror("Fail to bind");
exit(EXIT_FAILURE);
}
#endif

//填充结构体
bzero(&server_addr,sizeof(server_addr));
server_addr.sin_family = AF_INET;
server_addr.sin_port   = htons( atoi(argv[2]) );
server_addr.sin_addr.s_addr = inet_addr(argv[1]);

//建立连接
if(connect(connect_fd,(struct sockaddr *)&server_addr,sizeof(struct sockaddr)) < 0)
{
perror("Fail to bind");
exit(EXIT_FAILURE);
}


printf("conncet success.\n");


char buf[1024];


while(1)
{
fgets(buf,sizeof(buf),stdin);
buf[strlen(buf) - 1] = '\0';


write(connect_fd,buf,strlen(buf));
}

exit(EXIT_SUCCESS);
}

server.c------> 服务器端
//./server ip port
int main(int argc, const char *argv[])
{
int connect_fd;
int listen_fd;
struct sockaddr_in server_addr;
struct sockaddr_in peer_addr;

//创建流式套接字
if((listen_fd = socket(AF_INET,SOCK_STREAM,0)) < 0)
{
perror("Fail to socket ");
exit(EXIT_FAILURE);
}

//填充服务器结构体
bzero(&server_addr,sizeof(server_addr));
server_addr.sin_family = AF_INET;
server_addr.sin_port   = htons( atoi(argv[2]) );  //port号
server_addr.sin_addr.s_addr = inet_addr(argv[1]);  //ip地址
//绑定IP和Port
if(bind(listen_fd,(struct sockaddr *)&server_addr,sizeof(struct sockaddr)) < 0)
{
perror("Fail to bind");
exit(EXIT_FAILURE);
}

//设置套接字设为监听模式
listen(listen_fd,5);


printf("Listen ...\n");

int addr_len = sizeof(struct sockaddr);

char buf[1024];
int n;


while(1)
{
//提起请求
connect_fd = accept(listen_fd,(struct sockaddr *)&peer_addr,&addr_len);
if(connect_fd < 0)
{
perror("Fail to accept");
exit(EXIT_FAILURE);
}

printf("***********************\n");
printf("Ip : %s.\n",inet_ntoa(peer_addr.sin_addr));
printf("Port: %d.\n",ntohs(peer_addr.sin_port));
printf("***********************\n");
n = read(connect_fd,buf,sizeof(buf) - 1);
buf[n] = '\0';

printf("Read %d bytes : %s.\n",n,buf);
}

exit(EXIT_SUCCESS);
}


阅读(1839) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~