Chinaunix

标题: Linux TCP Server and client programm 1 [打印本页]

作者: bennettjessy    时间: 2009-06-02 16:57
标题: Linux TCP Server and client programm 1

/*****************************************************************
*Name: server.c
*Key words: socket bind listen accept recv
*****************************************************************/
#include
#include
#include
#include
#include
#include
#include
#include
#define SERVER_PORT 3333
#define BACKLOG 10
#define MAX_CONNECTED_NO 10
#define MAXDATASIZE 100
int main(int argc, char **argv)
{
struct sockaddr_in server_sockaddr_in, client_sockaddr_in;
int sin_size, recvbytes;
int sockfd, client_fd;
char buf[MAXDATASIZE+1];
// create a socket
if((sockfd = socket(AF_INET, SOCK_STREAM,0)) == -1) {
  perror("socket");
  return -1;
}
printf("create socket success! sockfd = %d\n", sockfd);
//init server_sockaddr_in
server_sockaddr_in.sin_family=AF_INET;   //IPV4
server_sockaddr_in.sin_port=htons(SERVER_PORT);  //Local Listen Port
server_sockaddr_in.sin_addr.s_addr=INADDR_ANY;  //Local IP Addresses if host has multi ip addresses
bzero(&(server_sockaddr_in.sin_zero), 8);   //bzero
//bind, bind sockfd with local sockaddr_in struct
if(bind(sockfd, (struct sockaddr *)&server_sockaddr_in, sizeof(struct sockaddr)) == -1) {
  perror("bind");
  return -1;
}
printf("bind success!\n");

//listen
if(listen(sockfd, BACKLOG) < 0) {
  perror("listen");
  return -1;
}
printf("listen...\n");
if((client_fd = accept(sockfd, (struct sockaddr *)&client_sockaddr_in, &sin_size)) < 0) {
  perror("accept");
  return -1;
}
printf("accept success\n");
memset(buf,0x00,sizeof(buf));
if((recvbytes=recv(client_fd, buf, MAXDATASIZE, 0)) < 0) {
  perror("recv");
  return -1;
}
printf("received a connection: %s\n", buf);
close(sockfd);
return 0;
}


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u3/98019/showart_1952680.html




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2