c语言 简单迭代,C语言实现的一个简单的TCP迭代服务器

适合于Linux平台

1.[文件] tcpserver.c ~ 2KB     下载(47)

/**

*@file:tcpserver.c

*@brief: A simple Tcp server

*@author: ToakMa

*@date:2014/10/09

*/

#include

#include

#include

#include

#include

#include

#include

#include

#include

#definePORT 9000

#defineWAIT_QUEUE_LEN 5

#define BUFF_SIZE 1024

#define WELCOME"Welcome to my server ^_^!\n"

int main(int argc, char *argv[])

{

int serverfd, clientfd;

struct sockaddr_in saddr;

struct sockaddr_in caddr;

socklen_t c_addrlen;

int res;

int len;

char buff[BUFF_SIZE];

//1. create socket

serverfd = socket(AF_INET, SOCK_STREAM, 0);

if (-1 == serverfd)

{

perror("server socket : ");

return -1;

}

printf("server socket create succ!\n");

//2. prepare IP and port

//memset(&saddr, 0, sizeof(saddr));

saddr.sin_family = AF_INET;

saddr.sin_port= htons(PORT);

saddr.sin_addr.s_addr = INADDR_ANY;

//inet_aton("192.168.0.100", &(saddr.sin_addr));

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

//3. bind

res = bind(serverfd, (struct sockaddr *)&saddr, sizeof(struct sockaddr));

if (-1 == res)

{

perror("server bind: ");

return -1;

}

printf("bind succ!\n");

//4. listen

res = listen(serverfd, WAIT_QUEUE_LEN);

if (-1 == res)

{

perror("server listen : ");

return -1;

}

printf("server listen...\n");

//5. accept

c_addrlen = sizeof(struct sockaddr_in);

clientfd = accept(serverfd, (struct sockaddr *)&caddr, &c_addrlen);

if (-1 == clientfd)

{

perror("server accept: ");

return -1;

}

printf("server have a client, IP: %s \n", inet_ntoa(caddr.sin_addr));

//6.send a welcome

send(clientfd, WELCOME, strlen(WELCOME), 0);

//7. interactive

while ((len = recv(clientfd, buff, BUFF_SIZE, 0)) > 0)

{

buff[len] = '\0';

printf("recv msg is : %s \n", buff);

if (send(clientfd, buff, len, 0) < 0)

{

perror("server send: ");

return -1;

}

}

//8. close

close(clientfd);

close(serverfd);

return 0;

}

2.[文件] tcpclient.c ~ 2KB     下载(28)

/**

*@file: tcpclient.c

*@brief: A simple Tcp client

*@author: ToakMa

*@date: 2014/10/09

*/

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define PORT 9000

#define BUFF_SIZE 1024

int main(int argc, char *argv[])

{

int sockfd;

int recv_len, send_len;

struct sockaddr_in remote_addr;

char buff[BUFF_SIZE];

int res;

//1. create socket

sockfd = socket(AF_INET, SOCK_STREAM, 0);

if (-1 == sockfd)

{

perror("client socket :");

return -1;

}

//2. prepare ip and port

memset(&remote_addr, 0, sizeof(remote_addr));

remote_addr.sin_family = AF_INET;

remote_addr.sin_port = htons(PORT);

//remote_addr.sin_addr.s_addr = inet_addr("127.0.0.1");

remote_addr.sin_addr.s_addr = inet_addr(argv[1]);

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

//3. connect to server

res = connect(sockfd, (struct sockaddr *)&remote_addr, sizeof(remote_addr));

if (-1 == res)

{

perror("client connect: ");

return -1;

}

printf("client connect server succ!\n");

//4. recv sth

recv_len = recv(sockfd, buff, sizeof(buff), 0);

buff[recv_len] = '\0';

printf(" %s ", buff);

//5. interactive

while (1)

{

printf("Enter string to send: ");

scanf("%s", buff);

if (!strcmp(buff, "quit"))

break;

send_len = send(sockfd, buff, strlen(buff), 0);

recv_len = recv(sockfd, buff, BUFF_SIZE, 0);

buff[recv_len] = '\0';

printf(" received: %s \n", buff);

}

//6. close

close(sockfd);

return 0;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值