码迷,mamicode.com
首页 > 其他好文 > 详细

TCP,UDP

时间:2014-11-18 06:52:51      阅读:216      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   ar   os   使用   sp   for   数据   

地址转换:aton\atoa,ascii,network,32bit与ascii转换

大端小端转换

字节充转换:htons\htonl\htohs\ntohl.网络序与主机序转换。

主机名转换为IP地址:
struct hostent *gethostbyname(const char *hostname)
struct hostent
{
    char *h_name;
    char *h_aliases;
    int h_addrtype;
    int h_length;
    char **h_addr_list;
}

sock编程常用函数:
socket创建一个socket
bind绑定IP地址的端口号到socket
connect连接服务器
listen设定服务器允许的最大连接数
accept等待客户端socket连接请求
send发送数据
recv接收数据


基于TCP服务器:
a.使用socket函数创建socket
b.使用bind函数绑定IP地址、端口信息到socket上
c.使用listen设置允许的最大连接数
d.使用accept等待客户端连接请求,阻塞等待。
e.使用send/recv或者read/write收发数据
f.关闭连接

基于TCP客户端:
a.使用socket创建socket
b.设置要连接的服务器的IP地址和端口的属性
c.使用connect连接服务器
d.使用send/recv或者read/write收发数据
e.关闭连接


基于UDP服务器:
a.使用socket创建一个socket
b.使用bind绑定地址、端口信息到socket
c.使用recvfrom循环接收数据
d.关闭连接

基于UDP客户端:
a.使用socket创建一个socket
b.使用bind绑定地址、端口信息到socket
c.设置对方的IP地址、端口等属性
e.使用sendto发送数据
f.关闭连接


并发服务器模型:
循环服务器:在同一时刻只能响应一个客户端请求
并发服务器:服务器同一时刻可以响应多个客户端请求


实现方法:
UDP服务器每次从套接字上读取一个客户端的夜请求---处理---然后将结果返回给客户端。
socket();
bind();
while(1)
{
     recvfrom();
    process();
    sendto();
}

TCP循环服务器接受一个客户端连接,然后处理,完成这个客户端所有请求后,断开连接:
socket();
bind();
listen();
while(1);
{
    accept();
    process();
    close();
}


TCP并发服务器:
并发服务器思想是每一个客户机的请求并不是由服务器直接处理,而是由服务器创建子进程来处理:
socket();
bind();
listen();
while(1)
{
    accept();
    if(fork()==0)
    {
        process();
        close();
        exit();
    }
    close();
}

 

TCP,UDP

标签:style   blog   color   ar   os   使用   sp   for   数据   

原文地址:http://www.cnblogs.com/x113/p/4104783.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!