发现开设网络程序设计课以来,一直在虚度,始终没有将心安放在基本的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,表示不确定地址或任意地址*/