简单理解和实现socket(套接字)

学习总结

1、什么是套接字?

套接字(socket)是支持TCP/IP的网络通信的基本操作单元,可以看做是不同主机之间的进程进行双向通信的端点,简单的说就是通信的两方的一种约定,用套接字中的相关函数来完成通信过程。

应用层通过传输层进行数据通信时,TCP和UDP会遇到同时为多个应用程序进程提供并发服务的问题。多个TCP连接或多个应用程序进程可能需要 通过同一个TCP协议端口传输数据。为了区别不同的应用程序进程和连接,许多计算机操作系统为应用程序与TCP/IP协议交互提供了称为套接字 (Socket)的接口,区分不同应用程序进程间的网络通信和连接。

生成套接字,主要有3个参数:通信的目的IP地址、使用的传输 层协议(TCP或UDP)和使用的端口号。Socket原意是“插座”。通过将这3个参数结合起来,与一个“插座”Socket绑定,应用层就可以和传输 层通过套接字接口,区分来自不同应用程序进程或网络连接的通信,实现数据传输的并发服务。

socket相当于用电话机与他人通话,首先要做的就是安装电话机。
而安装电话机需要用到以下步骤来完成:

第一步 安装电话机 创建socket

//代码示例:
//创建socket需要调用 Winsock2.h 头文件
SOCKET sockCli = socket
	(
	    //第一个参数代表地址族规范
		AF_INET,//表示IPv4地址族
		//第二个参数代表socket的类型
		SOCK_STREAM,// 面向连接 TCP协议 一般用于 IPv4 IPv6 地址族
		//第三个参数 要使用的协议
		0  //为0 表示调用者不希望指定协议,服务提供商将选择要使用的协议
	);

第二步 安装完电话机接下来要干什么?
当然是分配电话号码

    //SOCKADDR_IN 指定AF_INET地址族的传输地址和端口
    SOCKADDR_IN addrSrv;
    //设置指定IPv4传输地址
	addrSrv.sin_addr.S_un.S_addr = htonl(INADDR_ANY);//htonl 地址转化 INADDR_ANY 任何地址
	//传输地址的地址族
	addrSrv.sin_family = AF_INET;
	//传输协议端口号
	//当服务端与客户段端口号不同是将无法连接成功
	addrSrv.sin_port = htons(6000);
    //分配电话号码  
    bind(sockSrv, (SOCKADDR*)&addrSrv,  sizeof(SOCKADDR) );

第三步 监听

//监听传入连接状态的电话机
listen(sockSrv, 5)//最大的监听数目 ,执行到listen,但尚未执行到accept

第四步 分配一台分机去处理客户端的端连接


SOCKADDR_IN addrCli;
	int len 
  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值