资源简介
网上的很多代码都是将主函数中如何使用socket,却对socket的内部实现很少提及,本代码解决了这一问题,写明了socket内部函数的实现过程。但是socket它的实现需要加进部分头文件和调用下层的TCP、UDP,所以socket.c在编译时会出现一定错误,但是并不妨害理解socket内部的实现过程。(这只是第一个版本,随时更新)

代码片段和文件信息
/***********************************************************************************************************************************
*项目名称:TCP/IP协议栈
*模块名称:socket模块
*模块功能:
*组长:张磊
*作者:胡启超
*时间:2011_8_3
************************************************************************************************************************************/
#include “Configure.h“
#include “socket.h“
#include “mbuf.h“
/***********************************************************************************************************************************
*函数名:Socket_Create
*功能描述:创建套接字,并指定其类型
*参数:type TCP指定SOCK_STREAM UDP指定SOCK_DGRAM
*返回值:成功时返回新创建的套接字的索引号,失败时返回FALSE
*时间:2011_8_3 19:00
************************************************************************************************************************************/
uint8 Socket_Create(/*uint8 domain*/ uint8 type /*uint8 protocol*/ ) {
uint8 i;
for(i=0 ; i< MAX_SOCKET_NUM ; i++) {
if(socket_arry[i].EN == 0) {
socket_arry[i].EN = 1;
socket_arry[i].type = type;
socket_arry[i].domain = AF_INET;
sockFD = i;
return(sockFD);
}
else continue;
}
return FALSE;
}
/***********************************************************************************************************************************
*函数名:Socket_Bind
*功能描述:将创建的套接字与本地IP、端口号绑定
*参数:sockFD 指定套接字的索引号,addr是指向sockaddr结构体的指针,该结构体中存放着本地的IP和端口号
*返回值:绑定成功时返回TRUE
*时间:2011_8_3 19:05
************************************************************************************************************************************/
uint8 Socket_Bind(uint8 sockFD struct sockaddr * addr /* uint8 len*/) {
socket_arry[sockFD].src_ip [0] = addr->sin_addr[0];
socket_arry[sockFD].src_ip [1] = addr->sin_addr[1];
socket_arry[sockFD].src_ip [2] = addr->sin_addr[2];
socket_arry[sockFD].src_ip [3] = addr->sin_addr[3];
socket_arry[sockFD].src_port [0] = addr->sin_port[0];
socket_arry[sockFD].src_port [1] = addr->sin_port[1];
return TRUE;
}
功能描述
/***********************************************************************************************************************************
*函数名:Socket_Listen
*功能描述:监听套接字,等待建立连接时三次握手
*参数:指定套接字的索引号
*返回值:当建立连接成功时返回TRUE,建立连接失败时返回FALSE
*限制:该函数仅用于服务器端
*时间: 2011_8_3 19:10
************************************************************************************************************************************/
uint8 Socket_Listen(uint8 sockFD /*uint16 backlog*/) {
if (sockFD < MAX_SOCKET_NUM) {
if (socket_arry[sockFD].type == SOCK_STREAM) {
do {
OSTimeDly(100);
}while(!(syn_lis));
//发送需要对方的ip和端口号,即将mbuf中的对方ip和端口号赋值给监听的socket
socket_arry[sockFD].dst_ip [0] = recvbuf->dst_ip[0]; /*从mbuf中取得*/
socket_arry[sockFD].dst_ip [1] = recvbuf->dst_ip[1];
socket_arry[sockFD].dst_ip [2] = recvbuf->dst_ip[2];
socket_arry[sockFD].dst_ip [3] = recvbuf->dst_ip[3];
socket_arry[sockFD].dst_port [0] = recvbuf->dst_p
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 12391 2011-08-03 23:12 socket 1.0\socket.c
文件 1757 2011-08-03 23:17 socket 1.0\socket.h
目录 0 2011-08-03 20:41 socket 1.0
----------- --------- ---------- ----- ----
14148 3
相关资源
- Borland Socket Server Fix2.0 D7
- Borland Socket Server程序 包含D6和D7源码
- 通信软件的具体实例──基于Socket的
- 用Socket编程实现FTP
- websocket实现一对一聊天
- 代码客:G-TcpServer(IOCP) 1.0 正式版及
- SOCKET 网络编程 计算机网络 作业 客户
- linux 网络实验 ftp程序
- 用Socket写的简易FTP服务器和客户端
- socket小工具(可方便建立TCP UDP的soc
- socket客户端源码
- 基于CSocket的多人聊天室
- socket文件传输源码
- Socket自制系统
- HP用SOCKET实现(客户端---服务端)
- zeromq的windows版本安装包
- STM32分别以串口硬件SPI模拟并口驱动
- 《TCP/IP:协议分析与应用编程》课后
- linux下基于socket和curses的双人弹球游戏
- 计算机网络socket编程实验
- linux下socket can 编程详解
- FANUC机器人Socket Message通讯设置及使用
- Delphi简单实现局域网远程开机
- 易语言websocket服务器源码
- websocket规范 RFC6455 中文版
- 富士康H61S主板最新BIOS,支持22NCPU
- Socket-UDP整合消息接收,发送
- websocket-rtsp-proxy-test.zip
- 基于QTsocket的局域网聊天室
- SuperSocket服务端与客户端通信
评论
共有 条评论