SOCKET
文章平均质量分 73
lhuoshan
这个作者很懒,什么都没留下…
展开
-
网络socket编程指南 4 listen accept send recv 函数
listen()函数 是换换内容得时候了。假如你不希望与远程的一个地址相连,或者说, 仅仅是将它踢开,那你就需要等待接入请求并且用各种方法处理它们。处 理过程分两步:首先,你听--listen(),然后,你接受--accept() (请看下面的 内容)。除了要一点解释外,系统调用 listen 也相当简单。int listen(int sockfd, int backlog); sockfd 是调用 socket() 返回的套接字文件描述符。backlog 是在进入 队列中允许的连接数目。什么意思呢? 进原创 2010-07-14 14:40:00 · 6545 阅读 · 1 评论 -
基于TCP协议的网络程序
<br />下图是基于TCP协议的客户端/服务器程序的一般流程:<br />图 37.2. TCP协议通讯流程<br /><br /><br />服务器调用socket()、bind()、listen()完成初始化后,调用accept()阻塞等待,处于监听端口的状态,客户端调用socket()初始化后,调用connect()发出SYN段并阻塞等待服务器应答,服务器应答一个SYN-ACK段,客户端收到后从connect()返回,同时应答一个ACK段,服务器收到后从accept()返回。<br />数据传输的过原创 2010-07-21 11:49:00 · 1009 阅读 · 0 评论 -
UNIX Domain Socket IPC
<br />socket API原本是为网络通讯设计的,但后来在socket的框架上发展出一种IPC机制,就是UNIX Domain Socket。虽然网络socket也可用于同一台主机的进程间通讯(通过loopback地址127.0.0.1),但是UNIX Domain Socket用于IPC更有效率:不需要经过网络协议栈,不需要打包拆包、计算校验和、维护序号和应答等,只是将应用层数据从一个进程拷贝到另一个进程。这是因为,IPC机制本质上是可靠的通讯,而网络协议是为不可靠的通讯设计的。UNIX Domai原创 2010-07-21 11:41:00 · 677 阅读 · 0 评论 -
网络字节序
我们已经知道,内存中的多字节数据相对于内存地址有大端和小端之分,磁盘文件中的多字节数据相对于文件中的偏移地址也有大端小端之分。网络数据流同样有大端小端之分,那么如何定义网络数据流的地址呢?发送主机通常将发送缓冲区中的数据按内存地址从低到高的顺序发出,接收主机把从网络上接到的字节依次保存在接收缓冲区中,也是按内存地址从低到高的顺序保存,因此,网络数据流的地址应这样规定:先发出的数据是低地址,后发出的数据是高地址。TCP/IP协议规定,网络数据流应采用大端字节序,即低地址高字节。例如上一节的UDP段格式,地址0原创 2010-07-21 12:24:00 · 624 阅读 · 0 评论 -
基于TCP协议的网络程序
<br />下图是基于TCP协议的客户端/服务器程序的一般流程:<br />图 37.2. TCP协议通讯流程<br /><br /><br />服务器调用socket()、bind()、listen()完成初始化后,调用accept()阻塞等待,处于监听端口的状态,客户端调用socket()初始化后,调用connect()发出SYN段并阻塞等待服务器应答,服务器应答一个SYN-ACK段,客户端收到后从connect()返回,同时应答一个ACK段,服务器收到后从accept()返回。<br />数据传输的过原创 2010-07-21 12:22:00 · 608 阅读 · 0 评论 -
基于UDP协议的网络程序
<br />下图是典型的UDP客户端/服务器通讯过程(该图出自[UNPv13e])。<br />图 37.3. UDP通讯流程<br /><br /><br />以下是简单的UDP服务器和客户端程序。/* server.c */#include <stdio.h>#include <string.h>#include <netinet/in.h>#include "wrap.h"#define MAXLINE 80#define SERV_PORT 8000int mai原创 2010-07-21 11:45:00 · 632 阅读 · 0 评论 -
server/client windows
<br /> //Server.cpp<br /> #include <iostream><br /> #include <Windows.h><br />#pragma comment(lib,"ws2_32.lib")<br /> <br /> using namespace std;<br /> <br /> #define PORT 4000<br /> #define IP_ADDRESS "10.3.37.91"<br /> <br /> DWORD WIN原创 2010-07-19 15:04:00 · 758 阅读 · 0 评论 -
有关raw socket的一些知识
<br />有关raw socket的一些知识<br /><br /> 众所周知,通过socket编程,我们能够实现机器之间的通信.在TCP/IP协议<br />簇(PF_INET)中,可以建立面向连接的SOCK_STREAM类型的socket,非连接的<br />SOCK_DGRAM类型的socket.事实上,在所有的网络程序中,也是这两种socket用<br />的最为广泛.除此之外,还有一些不常用的socket类型,它们却是在某些网络通<br />信中担当重要的角色.这里要讲的就是这么一种soc转载 2010-07-20 10:44:00 · 818 阅读 · 0 评论 -
网络socket编程指南 3 socket bind connect 函数
listen()函数 是换换内容得时候了。假如你不希望与远程的一个地址相连,或者说, 仅仅是将它踢开,那你就需要等待接入请求并且用各种方法处理它们。处 理过程分两步:首先,你听--listen(),然后,你接受--accept() (请看下面的 内容)。除了要一点解释外,系统调用 listen 也相当简单。int listen(int sockfd, int backlog); sockfd 是调用 socket() 返回的套接字文件描述符。backlog 是在进入 队列中允许的连接数目。什么意思呢? 进原创 2010-07-14 14:39:00 · 4284 阅读 · 0 评论 -
Winsock 函数简介
1、WSAStartup函数用于初始化Winsock[声明]nt WSAStarup(WORD wVersionRequested,LPWSADATA lpWSAData);[参数]wVersionRequested - 要求使用Winsock的最低版本号lpWSAData - Winsock的详细资料[返回值]当函数成功调用时返回0失败时返回非0的值2、socket函数用于生成socket(soket Descriptor)[声明]SOCKET so原创 2010-07-15 11:42:00 · 2422 阅读 · 0 评论 -
socket Linux 下网络编程中的select
#include #include int select (int maxfdp1, fd_set *readset, fd_set *writeset, fd_set *exceptset, const struct timeval * timeout); Return >0:就绪描述字的正数目 -1:出错 0 :超时 struct timeval{ long tv_sec; // seconds long tv_usec; // microseconds }原创 2010-07-15 10:20:00 · 901 阅读 · 0 评论 -
socket bind
SOCKET socket( int af, int type, int protocol ); 应用程序调用socket函数来创建一个能够进行网络通信的套接字。 第一个参数指定应用程序使用的通信协议的协议族,对于TCP/IP协议族,该参数置AF_INET; 第二个参数指定要创建的套接字类型,流套接字类型为SOCK_STREAM、数据报套接字类型为SOCK_DGRAM; 第三个参数指定应用程序所使用的通信协议。 该函数如果调用成功就返回新创建的套接字的描述符,如果失败就返回INVALID原创 2010-07-14 14:21:00 · 5084 阅读 · 0 评论 -
struct sockaddr与struct sockaddr_in ,struct sockaddr_un的区别和联系
<br />在linux环境下,结构体struct sockaddr在/usr/include/linux/socket.h中定义,具体如下:<br />typedef unsigned short sa_family_t;<br />struct sockaddr {<br /> sa_family_t sa_family; /* address family, AF_xxx */<br /> char sa_data[14];原创 2010-07-16 09:43:00 · 3093 阅读 · 2 评论 -
Socket程序从windows移植到linux下需要注意的
)头文件 windows下winsock.h或winsock2.hlinux下netinet/in.h(大部分都在这儿),unistd.h(close函数在这儿),sys/socket.h(在in.h里已经包含了,可以省了)2)初始化windows下需要用WSAStartup启动Ws2_32.lib,并且要用#pragma comment(lib,"Ws2_32")来告知编译器链接该lib。linux下不需要3)关闭socketwindows下closesocket(...)linux下close(...)原创 2010-07-14 15:18:00 · 3947 阅读 · 1 评论 -
Unix domain socket和memcached
<br />unix域协议并不是一个实际的协议族,而是在单个主机上执行客户/服务器通信的一种方法,是IPC的方法之一,特定于*nix平台。使用unix domain socket有三个好处: <br />1)在同一主机上,unix domain socket比一般的tcp socket快上一倍,性能因素这是一个主要原因。 <br />2)unix domain socket可以在同一主机的不同进程之间传递文件描述符 <br />3)较新的unix domain socket实现把客户的ID和组ID提供给服务原创 2010-07-23 10:07:00 · 1486 阅读 · 0 评论