设为首页 加入收藏

TOP

Linux下Socket TCP的简单例子
2014-11-24 07:56:37 来源: 作者: 【 】 浏览:0
Tags:Linux Socket TCP 简单 例子

服务器端:


#include
#include // for close function
#include // for bzero function
#include
#include
#include
#include
#include
#include
#define SERV_PORT 5555
#define SERV_IP "xxx.xxx.xxx.xxx"//mx27 board ip
#define BACKLOG 10 //the counts of connect can keep in wait queen
#define MAXBUFSIZE 200
char buf[MAXBUFSIZE]; //receive buf
char str_to_send[200] ="important notice:to cerebrate China log on moon successful on 12nd,Jan,2010. everyone has a day free from work!\n";
int main(int argc, char **argv)
{
int sockfd,sockfd_client;
socklen_t sin_size; // used in accept(),but i don't know what it means
printf("#####################################################\n");
printf("socket receive text by pafone 30th,April,2009\n");
printf("server ip:%s port:%d \n",SERV_IP,SERV_PORT);
printf("#####################################################\n");
struct sockaddr_in my_addr;//local ip info
struct sockaddr_in serv_addr,client_sockaddr; //server ip info
int serverport;
if(argc == 2)
{
serverport = atoi(argv[1]);
}
else
{
serverport = SERV_PORT;
}
if(-1 == (sockfd = socket(AF_INET,SOCK_STREAM,0)) )
{
perror("error in create socket\n");
exit(0);
}
//set the sockaddr_in struct
serv_addr.sin_family = AF_INET;
serv_addr.sin_port = htons(serverport);//server listening port
serv_addr.sin_addr.s_addr = INADDR_ANY;//here is the specia in listening tcp connect
bzero(&serv_addr.sin_zero,8);
//bind , the ip and port information is aready in the sockaddr
if(-1 == bind(sockfd,(struct sockaddr*)&serv_addr,sizeof(struct sockaddr)))
{
perror("bind error\n");
exit(0);
}
printf("bind seccessful\n");

if(-1 == listen(sockfd,BACKLOG))
{
perror("lisenning");
exit(1);
}
printf("the server is listenning...\n");
//accept
printf("before accept:sockfd_client is %d\n",sockfd_client);
if(-1 == (sockfd_client = accept(sockfd,(struct sockaddr*)&client_sockaddr,&sin_size)))
{
perror("accept");
exit(1);
}
printf("accept connect.\n");
int recvbytes;//the number of bytes receive from socket
// char buffer[200];
// printf("sockfd_client is %d\n",sockfd_client);
// recvbytes = recv(sockfd_client,buffer,200,0);
if(-1 == (recvbytes = recv(sockfd_client,buf,MAXBUFSIZE,0)))//changed here
if(-1 == recvbytes)
{
perror("receive");
exit(1);
}
printf("%dbytes receive from connect:%s\n",recvbytes,buf);
close(sockfd);
close(sockfd_client);
}


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Android 电话的反射调用机制实现.. 下一篇Android SD卡路径问题以及如何获..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·在 Redis 中如何查看 (2025-12-26 03:19:03)
·Redis在实际应用中, (2025-12-26 03:19:01)
·Redis配置中`require (2025-12-26 03:18:58)
·Asus Armoury Crate (2025-12-26 02:52:33)
·WindowsFX (LinuxFX) (2025-12-26 02:52:30)