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

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;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值