linux c socket程式設計

2021-08-29 23:57:39 字數 2238 閱讀 1539

這裡主要是**,網上有原理

socket 有同步,非同步之分,我這是個同步的,同步又有阻塞和非阻塞之分,

這的非阻塞是用select()函式實現的

客戶端:

#include 

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define servport 2000

#define maxdatasize 100

int main(int argc,char ** argv);

if(argc<2)

if((host=gethostbyname(argv[1]))==null)

if((sockfd=socket(af_inet,sock_stream,0))==-1)

serv_addr.sin_family=af_inet;

serv_addr.sin_port=htons(servport);

serv_addr.sin_addr=*((struct in_addr *)host->h_addr);

bzero(&(serv_addr.sin_zero),8);

if(connect(sockfd,(struct sockaddr *)&serv_addr,sizeof(struct sockaddr))==-1)

while(1)

if(fd_isset(sockfd,&wfds))

}/**

if(f<=0)

if(fd_isset(sockfd,&rfds))

if(fd_isset(sockfd,&wfds))

**//**

if((recvbytes=read(sockfd,&buf,50))==-1)

buf[recvbytes]='\0';

printf("read server val:%s",buf);

printf("enter content:");

**/// int num=0;

// while((content[num++]=getchar())!='\n');

/**if(send(sockfd,&gd,sizeof(struct gpsdata),0)==-1)

**/// write(sockfd,"\n",2);

}return 0;

}//main

伺服器端:

#include 

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define servport 3333

#define backlog 10

#define datasize 100

main();

int tags;

if((sockfd=socket(af_inet,sock_stream,0))==-1)

my_addr.sin_port=htons(servport);

my_addr.sin_family=af_inet;

my_addr.sin_addr.s_addr=inaddr_any;

bzero(&(my_addr.sin_zero),8);

if(bind(sockfd,(struct sockaddr *)&my_addr,sizeof(struct sockaddr))==-1)

if(listen(sockfd,backlog)==-1)

while(1)

printf("received a connection from %s\n",inet_ntoa(remote_addr.sin_addr));

if(!fork())

if(fd_isset(client_fd,&wfds))

break;}}

close(client_fd);

exit(0);}}

}

linux c socket程式設計

ntohl 與 htonl 相反的過程 ntohs 與htons 相反的過程 inet addr char 點分十進位制轉化為整型 inet nota int 整型轉化為點分十進位制 主機位元組序 和 網路位元組序 當主機位元組序埠號位為 0x1234 那麼 網路位元組序就為 0x12 0x34 如...

linux C socket程式設計

這是乙個關於socket的題 要求你自己寫乙個socket程式,然後解析客戶端從瀏覽器位址列提交的資料。要求 在瀏覽器中輸入http localhost 8500 後,你的socket程式向瀏覽器返回乙個網頁,以後就用這個網頁向你寫得這個socket程式提交資料,你的socket程式負責解析這些資料...

linux C socket 程式設計(二)

linux c socket 程式設計 一 linux c socket 程式設計 二 linux c socket 程式設計 三 tcpserver socket bind listen accept write read send recv close tcpclient socket conn...