socket网络编程改进

来源:互联网 发布:淘宝开店流程 手机 编辑:程序博客网 时间:2024/06/06 13:17
#include "myhead.h"int main(){    int socketfd = 0;    struct sockaddr_in sock_server = {0};    int ret = 0;    char msg[20] = {0};    socketfd = socket(PF_INET, SOCK_STREAM, 0);    if (-1 == socketfd)    {        perror("socket");        return -1;    }    printf("socket success..\n");    sock_server.sin_family = AF_INET;    sock_server.sin_port = MYPORT;    sock_server.sin_addr.s_addr = inet_addr(MYADDR);    ret = connect(socketfd, (struct sockaddr*)&sock_server, sizeof(struct sockaddr));    if (-1 == ret)    {        perror("connect");        return -1;    }    printf("connect success..\n");    int sencnt = 0;     while (1)    {printf("input send string\n");scanf("%s", msg);        sencnt = send(socketfd, msg, strlen(msg), 0);          if (-1 == sencnt){    perror("send");    return -1;}        if (strcmp(msg,"end") ==0)        {    close(socketfd);            break;        }    }    return 0;}

#include "myhead.h"int main(){    int ret = 0;    int socketfd = 0;    int clientfd = 0;    pid_t pid = 0;    char recvbuf[40] = {0};    int recvcnt = 0;    struct sockaddr_in sock_server = {0};    struct sockaddr_in sock_client = {0};    int len = sizeof(struct sockaddr);    socketfd = socket(PF_INET, SOCK_STREAM, 0);    if (-1 == socketfd)    {        perror("socket");return -1;    }    printf("socket success..\n");    sock_server.sin_family = AF_INET;    sock_server.sin_port = MYPORT;    sock_server.sin_addr.s_addr = inet_addr(MYADDR);    ret = bind(socketfd, (struct sockaddr *)&sock_server, sizeof(struct sockaddr));    if (-1 == ret)    {        perror("bind");return -1;    }    printf("bind success...\n");    ret = listen(socketfd, SOCK_STREAM);    if (-1 == ret)    {        perror("listen");return -1;    }    printf("listen success...\n");   while(1)   {       clientfd = accept(socketfd, (struct sockaddr*)&sock_client, &len);       if (-1 == clientfd)       {           perror("accept");           return -1;       }       printf("accept success...\n");pid = fork();if (0 == pid){    while(1)    {memset(recvbuf, 0, sizeof(recvbuf));                recvcnt = recv(clientfd, recvbuf, sizeof(recvbuf), 0);          if (-1 == recvcnt)        {    perror("recv");    return -1;        }else{            printf("recvcnt = %d Date:%s\n", recvcnt,recvbuf);}if (strcmp(recvbuf,"end") ==0){            break;}            }        }        else if (pid > 0)        {    close(clientfd);    waitpid(-1,NULL,WNOHANG);        }    }    close(socketfd);    return 0;}

原创粉丝点击