Linux实现简单的socket通信(TCP/IP)

目录

1.服务端创建流程

2.服务端程序

3.客户端创建流程

4.客户端程序

5.运行结果


1.服务端创建流程

服务端流程:(被动连接,需创建自己的地址信息)

1.创建两个文件描述符,一个用于创建监听套接字一个用于服务端与客户端之间连接成功后传输数据的套接字

2.创建服务端地址结构,指定服务端的IP协议簇、IP地址和端口号;(服务端创建自己的地址信息)

2.将监听套接字与服务端的地址信息进行绑定,调用函数为bind();

3.将监听套接字设定为监听状态,开始监听,并且设定同时连接数上限,所有连接请求将放在一个连接请求队列里面,调用函数listen();

4.在监听套接字处的连接请求队列中,取出第一个连接请求来建立连接,如果没有连接请求则会一直阻塞,调用函数accept(),如果连接成功则会返回这个新连接的套接字,这个表征新连接的套接字才表示一个成功的连接,后续的数据传输都是通过这个套接字进行的。通过accept()函数可获得成功接入的客户端的地址结构;

5.上述流程都执行成功后,说明服务端与客户端连接成功,就可以使用read()读取客户端发来的信息,write()向客户端进行信息写入了。(read和write都是使用新连接的套接字)

2.服务端程序

#include <iostream>
#include <unistd.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <string.h>
#include <errno.h>

#define SERV_PORT 8888        //服务器端口
#define SERV_IP "127.1.1.1"   //服务器ip

using namespace std;

int main(int argc,char** argv)
{
	int servfd,clitfd;   //创建两个文件描述符,servfd为监听套接字,clitfd用于数据传输
	struct sockaddr_in serv_addr,clit_addr; //创建地址结构体,分别用来存放服务端和客户端的地址信息

	memset(&serv_addr,0,sizeof(serv_addr));  //初始化
	memset(&a
  • 12
    点赞
  • 83
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值