资源简介
网上的很多代码都是将主函数中如何使用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
相关资源
- 使用django+zeromq+tornado实现基于消息机
- 新版sockettool for mac
- linux ipv6简单tcp/udp socket通信
- linux c tcp socket 多线程简易聊天室
- websocket插件
- 基于socket的文件传输软件的设计与实
- Socket实战
- Socket 类封装 改进版
- webSocket 搭建
- IOCPExample_By_PiggyXP 完成端口
- 使用TCPServer编写多线程socket服务
- Qt 多线程使用 QTcpSocket及QTimer
- Socket双向通信基础代码
- 套接字Socket通信TCP聊天程序含界面
- 1306176648Sockets进行文件传输.zip
- cocos2dx3.x使用socket创建服务端和客户端
- VC Socket GET_POST发送HTTP请求
- 利用Asio网络库建立自己的Socket服务器
- Xzhi_socket接收与发送图片(终结者)
- 默认使用DES加密聊天信息的SocketChat(
- 有连接的socket通信posix)
- socket编程_windows_linux_数据传输
- windows平台下socket编程之TCP
- Unity3D使用socket通讯源码
- Linux下利用TCPsocket传输图片
- 使用Socket传输视频
- 使用Socket传输音频
- 多线程Socket.
- WEBSOCKET_fleck.dll
- zw_socket5proxy.zip
评论
共有 条评论