服务端
服务端流程:
1.创建socket套接字
2.给这个socket绑定一个端口号
3.给这个socket开启监听属性 -- 这个socket只能用来接收连接
4.等待客户端连接
5.开始通讯
6.关闭连接
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <arpa/inet.h>
#include <sys/socket.h>
#define PORT 8080
#define BUFFER_SIZE 1024
#define ADDR "127.0.0.1"
int main(void)
{
//创建套接字
int service_fd = socket(AF_INET,SOCK_STREAM,0);
if(service_fd == -1) return -1;
//为套接字绑定一个端口
struct sockaddr_in local = {0};
local.sin_addr.s_addr = htons(INADDR_ANY);
local.sin_family = AF_INET;
local.sin_port = htons(PORT);
int ret = bind(service_fd,(struct sockaddr*)&local,sizeof(local));
if(ret == -1) return -1;
//给socket开启监听属性
ret = listen(service_fd,10);
if(ret == -1)
{
close(service_fd);
return -1;
}
//等待客户端连接
while(1)
{
int client_fd = accept(service_fd,NULL,NULL);
if(client_fd == -1) continue;
while(1)
{
char buffer[BUFFER_SIZE] = {0};
int stat = recv(client_fd,buffer,sizeof(buffer),0);
if(stat <= 0) break;
printf("%s\n",buffer);
send(client_fd,buffer,strlen(buffer),0);
}
close(client_fd);
}
return 0;
}
客户端
客户端流程:
1.创建socket套接字
2.连接服务器
3.开始通讯
4.关闭连接
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <arpa/inet.h>
#include <sys/socket.h>
#define PORT 8080
#define BUFFER_SIZE 1024
#define ADDR "127.0.0.1"
int main(void)
{
//创建套接字
int client_fd = socket(AF_INET,SOCK_STREAM,0);
if(client_fd == -1) return -1;
//连接服务器
struct sockaddr_in target;
target.sin_addr.s_addr = inet_addr("127.0.0.1");
target.sin_family = AF_INET;
target.sin_port = htons(PORT);
int connect_stat = connect(client_fd,(struct sockaddr*)&target,sizeof(target));
if(connect_stat == -1)
{
close(client_fd);
return -1;;
}
//开始通信
while(1)
{
char send_buff[BUFFER_SIZE] = {0};
scanf("%s",send_buff);
send(client_fd,send_buff,strlen(send_buff),0);
char receive_buff[BUFFER_SIZE] = {0};
recv(client_fd,receive_buff,sizeof(receive_buff),0);
printf("%s\n",receive_buff);
}
close(client_fd);
return 0;
}
2216

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



