#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#define PORT 33333
int main()
{
int cfd;
int sockfd;
int c_len;
struct sockaddr_in addr;
struct sockaddr_in c_addr;
sockfd = socket(AF_INET, SOCK_STREAM,0);
if(sockfd = -1)
{
perror("socket create error!");
exit(1);
}
bzero(&addr,sizeof(struct sockaddr_in));
addr.sin_family = AF_INET;
addr.sin_port = htons(PORT);
addr.sin_addr.s_addr =inet_addr("192.168.1.13");
if (bind(sockfd,(struct sockaddr *)(&addr),sizeof(struct sockaddr_in)) <0)
{
perror("bind error!");
exit(1);
}
printf("bind success!\n");
if(listen(sockfd,3) < 0)
{
perror("listen error!");
exit(1);
}
printf("listen success!\n");
bzero(&c_addr,sizeof(struct sockaddr_in));
c_len = sizeof(struct sockaddr_in);
accept(sockfd,(struct sockaddr *)(&addr),sizeof(struct sockaddr_in));
if(cfd = accept(sockfd,(struct sockaddr *)(&addr),&c_len)<0)
{
perror("accept error!");
exit(1);
}
printf("accept success!\n");
printf("port = %d ip = %s\n",ntohs(c_addr.sin_port),inet_ntoa(c_addr.sin_addr));
return 0;
}
#include <stdio.h>
#include <stdlib.h>
#include <strings.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <arpa/inet.h>
int main()
{
int cliefd;
char buff[1024];
struct sockaddr_in servaddr;
cliefd = socket(AF_INET, SOCK_STREAM, 0);
if(cliefd == -1)
{
perror(“socket error:”);
exit(1);
}
printf(“socket success!\n”);
bzero(&servaddr, sizeof(struct sockaddr_in));
servaddr.sin_family = AF_INET;
servaddr.sin_port = htons(PORT);
servaddr.sin_addr.s_addr = inet_addr(“127.0.0.1”);
if(connect(cliefd, (struct sockaddr *)(&servaddr), sizeof(struct sockaddr_in)) < 0)
{
perror(“connection error:”);
exit(1);
}
printf(“connect success!\n”);
write(cliefd, “hello world!”, 13);
memset(buff, 0, sizeof(buff));
read(cliefd, buff, sizeof(buff));
printf(“recv = %s\n”, buff);
return 0;
}

本文介绍了一个简单的TCP服务器和客户端的实现过程,使用C语言编写,通过socket编程完成服务器端的监听、绑定、接受连接请求以及客户端的连接、发送和接收数据。示例展示了如何设置服务器地址结构,进行socket创建、bind、listen、accept等操作,并在客户端进行socket创建、connect、send和recv操作。
5902

被折叠的 条评论
为什么被折叠?



