在C语言中,可以通过套接字编程来编写网络客户端与服务器。以下是基本步骤的代码样例:
- 服务器端的主要步骤:
(1)创建套接字
int sockfd = socket(AF_INET, SOCK_STREAM, 0);
(2)绑定端口
struct sockaddr_in servaddr;
memset(&servaddr, 0, sizeof(servaddr));
servaddr.sin_family = AF_INET;
servaddr.sin_addr.s_addr = htonl(INADDR_ANY);
servaddr.sin_port = htons(12345);
bind(sockfd, (struct sockaddr *)&servaddr, sizeof(servaddr));
(3)开始监听
listen(sockfd, 10);
(4)接收客户端连接
struct sockaddr_in client;
socklen_t len = sizeof(client);
int acceptfd = accept(sockfd, (struct sockaddr*)&client, &len);
(5)交换数据
char buffer[1024];
read(acceptfd, buffer, sizeof(buffer));
(6)断开连接
close(acceptfd);
close(sockfd);
- 客户端的主要步骤:
(1)创建套接字
int sockfd = socket(AF_INET, SOCK_STREAM, 0);
(2)连接服务器
struct sockaddr_in servaddr;
memset(&servaddr, 0, sizeof(servaddr));
servaddr.sin_family = AF_INET;
servaddr.sin_port = htons(12345);
inet_pton(AF_INET, "127.0.0.1", &servaddr.sin_addr);
connect(sockfd, (struct sockaddr*)&servaddr, sizeof(servaddr));
(3)交换数据
char *mesg = "Hello, world!";
write(sockfd, mesg, strlen(mesg) + 1);
(4)读取返回数据
char buffer[1024];
read(sockfd, buffer, sizeof(buffer));
(5)断开连接
close(sockfd);
需要注意,以上为基础的套接字编程样例。在实际编程中需要添加错误处理逻辑,同时还需要考虑多线程或者异步IO等问题以处理多个网络连接。
发布者:luotuoemo,转转请注明出处:https://www.jintuiyun.com/173306.html