Linux 基本网络编程

基本套接字分为客户机/服务器和点对点模式。

C/S:sever/client---------------------------一般采用TCP

B/S:browser/server-----------------------一般采用UDP

常用的数据结构有in_addr(存储IP地址),sockaddr_in(表示Internet协议地址结构),sockaddr(存储主机IP地址和接口信息)。

struct in_addr{

    union{

        struct{u_char, s_b1, s_b2, s_b3, s_b4} s_un_b;

        struct{u_short s_w1, s_s2;} s_un_w;

        u_long s_addr;

  } s_un;
}
struct sockaddr_in{

    short sin_family;                //AF_INET

    u_short sin_port;               //16位端口号

    struct in_addr sin_addr;   //32位IP地址

    char sin_zero[8];

};        
struct sockaddr{

    unsigned short sa_family;

    char sa_data[14];

};

例子:

in_addr test;

test..s_un_b.s_b1=192;

test..s_un_b.s_b2=168;

test..s_un_b.s_b3=0;

test..s_un_b.s_b4=1;
struct sockaddr_in serverAddr;

memst(&serverAddr,0,sizeof(struct sockaddr_in));

serverAddr.sin_family=AF_INET;                          //AF_INET表示TCP

serverAddr.sin_port=htons(80);

serverAddr.sin_addr.s_addr=htonl(INADDR_ANY);           //INADDR_ANY表示当前所用的IP

常用函数

#incldue<sys/socket.h>



//创建套接字

SOCKET PASCAL FAR socket(int af, int type, int protocol)

//af指定通信协议--AF_UNIX,AF_INET,AF_NS

//type指定套接字类型,SOCK_STREAM(TCP),SOCK_DGRAM(UDP),SOCK_RAM(原始套接字)

//protocol指定特定协议



//套接字绑定

int PASCAL FAR bind(SOCKET s, const struct sockaddr FAR *name, int namelen)

//s指定要关联的套接字

//name指定要绑定的IP地址与端口信息



//侦听

int PASCAL FAR listen(SOCKET s, int backlog)

//backlog指定请求连接队列的最大长度,一般设为5



//侦听,接受数据

SOCKET PASCAL FAR accept(SOCKET s, struct sockaddr FAR* addr, int FAR* addrlen)

//s为当前指定的套接字

//addr为保存当前客户端的地址信息



//创建连接

int PASCAL FAR connect(SOCKET s, const struct sockaddr FAR* name, int namelen)



//TCP发送数据

int PASACAL FAR send(SOCKET s, const char FAR* buf, int len, int flags);

//s指定已经连接的套接字

//buf表示待发送数据的缓冲区

//flags用于设定发送控制参数,一般为0



//TCP接受数据

int PASACAL FAR recv(SOCKAET s,char FAR* buf,int len,int flags);



//UDP发送数据

ssize_t sendto(int sockfd, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen)

ssize_t recvform(int sockfd, const void *buf, size_t len, int flags, const struct sockaddr *from, socklen_t fromlen) 

//sockfd表示已经创建好的一个UDP套接字 

//to.from用于设置接受方和发送方的地址信息 

//tolen,fromlen用于设置地址信息的长度

例子:

TCP:

 

UDP:

 

 

 

 

你可能感兴趣的:(linux)