socket简单应用服务端代码(原创)tcp c/s

来源:互联网 发布:mac怎么免费翻墙 编辑:程序博客网 时间:2024/06/03 15:02
server.c:
 
#include
#include
#include //perror错误输出
#include
#include
#include
#include
#include
#include
#include
#define PORT        8999
#define MAXSIZE     (8 * 4096)
int main(int argc, char *argv[])
{
    int sockfd, peer, len;
    struct sockaddr_in serv_addr, clnt_addr;
    char recvmsg[MAXSIZE], sendmsg[MAXSIZE];
       
    sockfd = socket(AF_INET, SOCK_STREAM, 0);//创建socket
    if (sockfd < 0) {
        perror("socket error");
        return -1;
    }
 /*  配置socket */
    serv_addr.sin_family = AF_INET;
    serv_addr.sin_port = htons(PORT);
    serv_addr.sin_addr.s_addr = INADDR_ANY;
    bzero(&(serv_addr.sin_zero), 8);
 
 /* 绑定socket */
    if (bind(sockfd, (struct sockaddr *)&serv_addr, sizeof(struct sockaddr)) < 0) {
        perror("bind err");
        return -1;
    }
   
    /* 主动socket转为被动监听socket */
    if (listen(sockfd, 1) < 0) {
        perror("listen error");
        return -1;
    }
   
    /* 循环监听 */
    len = sizeof(clnt_addr);
    while (1) {
     printf("begin to accept\n");
        peer = accept(sockfd, (struct sockaddr *)&clnt_addr, &len);/* 接收连接 */
        if (peer < 0) {
            perror("Server: accept failed.\n");
            continue;
        }
        memset(recvmsg, 0, MAXSIZE);
        memset(sendmsg, 0, MAXSIZE);
  if (read(peer, recvmsg, sizeof(recvmsg)) < 0) {
   perror("recv err");
            break;
        }
        printf("client: %s\n", recvmsg);
        if (!strcmp(recvmsg, "quit")) {
            printf("close a connection\n");
            break;
        }
        strcpy(sendmsg, "I get your req");
        write(peer, sendmsg, strlen(sendmsg) + 1);
        close(peer);
    }
    return 0;
}

 
<script>window._bd_share_config={"common":{"bdSnsKey":{},"bdText":"","bdMini":"2","bdMiniList":false,"bdPic":"","bdStyle":"0","bdSize":"16"},"share":{}};with(document)0[(getElementsByTagName('head')[0]||body).appendChild(createElement('script')).src='http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion='+~(-new Date()/36e5)];</script>
阅读(215) | 评论(0) | 转发(0) |
0

上一篇:socket编程的同步、异步与阻塞、非阻塞示例详解之二

下一篇:Another MySQL daemon already running with the same unix socket

相关热门文章
  • 关于SSI
  • IP Sec VPN与NAT破镜重圆
  • JS模拟鼠标自动点击
  • UT2.0正式版下载
  • tomcat6.0配置(含配置视频下载...
  • linux dhcp peizhi roc
  • 关于Unix文件的软链接
  • 求教这个命令什么意思,我是新...
  • sed -e "/grep/d" 是什么意思...
  • 谁能够帮我解决LINUX 2.6 10...
给主人留下些什么吧!~~
评论热议
0 0