UDP socket 编程点滴记录

发现开设网络程序设计课以来,一直在虚度,始终没有将心安放在基本的socket编程上来,今天开始从基础开始:

#include "fsap2.h"
#include "typedef.h"
#include "macro.h"
#include "trace.h"
#include "socketwraper.h"

/*引入头文件*/
INT4 main()
{  
 
        UINT4   u4ChatSysPdu[MAX_MSG_SIZE/4];
        INT4         i4PduSize;
        DEBUG_PRINTF((const char *)"this is server!/n");  /*输出语句*/
        /* Test Socket API wraper */
        ChatSysServerInit();
        while(1)
        {
                ChatSysServerRecv(1, u4ChatSysPdu,&i4PduSize);
                DEBUG_PRINTF1("Recv:%s/n",(UINT1*)u4ChatSysPdu);
                ChatSysServerSend(u4ChatSysPdu,i4PduSize);  
        }  
   
        return SUCCESS;
}

/*INT4为:4字节整型 ;UINT4:无符号4字节整型*/

 

char                                 serverip[50] = "127.0.0.1";
struct sockaddr_in     servaddr,clientaddr;
int                                 serverfd,clientfd;
INT4 ChatSysServerInit()
{
      /*creat UDP socket ,success callback + */    
  serverfd=socket(AF_INET,SOCK_DGRAM,0);

/*AF_INET表示所用的协议是IPV4;AF_INET6表示IPV6*/

/*SOCK_DGRAM表示为UDP套接口(数据报套接口);而SOCK_STREAM表示TCP套接口(字节流套接口)*/
    if(serverfd<0)
    {
         return FAILURE;
    }
     DEBUG_PRINTF("Success to create udp socket !/n");
    
    bzero(&servaddr,sizeof(struct sockaddr_in));

/*bzero()为初始化函数,可实现清零操作,此处表示将&servaddr所指的地址开始的sizeof(struct sockaddr_in)长度内执行清零操作)*/
    servaddr.sin_family=AF_INET;
    servaddr.sin_addr.s_addr=htonl(INADDR_ANY);
    servaddr.sin_port=htons(SERVER_PORT);
    /* bind HOST:SERVER_PORT as server */
    if(bind(serverfd,(struct sockaddr*)&servaddr,sizeof(struct sockaddr_in))<0)

/*把长度为sizeof(struct sockaddr_in)地址(struct sockaddr*)&servaddr捆绑到套接口serverfd*/
    {
        return FAILURE;
    }
     DEBUG_PRINTF("bind address to serverfd !/n");
 
}

 

/*htonl()表示:host to network ,type long   将主机的无符号长整型数转换成网络通用的字节顺序。

 INADDR_ANY:指定地址为0.0.0.0,表示不确定地址或任意地址*/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值