Linux下socket编程示范(一个服务…

socket编程的基础函数使用请自查询,本文只给出在linux gcc可编译运行的socket通信的服务器程序与客户端程序。
代码如下:server端



#include
#include
#include
#include
#include                 //signal
#include             //socket
#include         //sockaddr_in
#include
#include                 //memset
const int BUFF_SIZE=10;
void process(int client_fd,int cmd)
{
    switch(cmd)
    {
    case 0:
        printf("rec cmd 0");break;
    case 1:
    default:
        printf("default %d\n",cmd);break;
    }
    send(client_fd,"OK",BUFF_SIZE,0);
}
int main(void) {
    int server_fd,client_fd;    //socket fd
    struct sockaddr_in my_addr;   //服务器网络地址结构体
    struct sockaddr_in remote_addr; //客户端网络地址结构体
    int cmd;
    char str[10];
    pid_t pid;
    unsigned int len;
//1.init
    memset(&my_addr,0,sizeof(my_addr));//数据初始化--清零
    my_addr.sin_family=AF_INET;         //设置为IP通信
    my_addr.sin_addr.s_addr=INADDR_ANY;//服务器IP地址--允许连接到所有本地地址上
    my_addr.sin_port=htons(8000);         //服务器端口号
//2.socket
    if( (server_fd = socket(AF_INET,SOCK_STREAM,0)) < 0)//create socket;
    {
        perror("socket create failed");
        exit(-1);
    }
//3.bind
    if (bind(server_fd,(struct sockaddr *)&my_addr,sizeof(struct sockaddr))<0)
    {
        perror("bind failed");
        return 1;
    }
//4.listen
    listen(server_fd,5);
    puts("Now server begin listening ,the listen queue len is5");


    signal(SIGCLD,SIG_IGN);     //ignore teh detail of the child process exit

    int client_len = sizeof(remote_addr);
    while(1){
//5.accept
        if((client_fd=accept(server_fd,(struct sockaddr *)&remote_addr,&client_len))<0)
            {
                perror("accept");
                return 1;
            }
        if( (pid = fork())== 0)            //child
        {

你可能感兴趣的:(【编程技术】)