socket编程部分API
以TCP协议为例,UNIX的相关API
int socket(int domain , int type , int protocol);
根据指定的地址族,数据类型,协议来分配一个socket的描述字以及所占用的资源。
domain:协议族,常见的有AF_INET、AF_INET6、AF_LOCAL、AF_ROUTE,其中AF_INET代表ipv4地址
type:socket类型,常见的socket类型有SOCK_STREAM、SOCK_DGRAM、SOCK_RAW、SOCK_PACKET、SOCK_SEQPACKET等
protocol:协议。常见的协议有IPPROTO_TCP、IPPTOTO_UDP、IPPROTO_SCTP、IPPROTO_TIPC等
返回值:返回一个套接口描述符0 or 1 or 2,如果出错,则返回-1。
int bind(int sockfd , const struct sockaddr * addr , socklen_t addrlen);
把一个地址族中的特定地址赋给socket
sockfd:socket描述字,即是sock引用
addr:要绑定给sockfd的协议地址
addrlen:协议地址的长度
通常服务器在启动时要绑定一个众所周知的IP地址和端口,用于提供服务,客户通过它就可以连接到服务器。但是客户端与之不同,客户端是在connect():时自动分配一个端口。这就是为什么客户没有调用bind();的操作而服务器在listen();前需要bind();的操作。
int listen(int sockfd , int backlog);
监听socket
sockfd:要监听的socket描述字
backlog:相应socket可以排队的最大连接个数
int connect(int sockfd , const struct sockaddr *addr , socklen_t addrlen);
连接某个socket
sockfd:某个客户端的描述字
addr:服务器的socket地址
addrlen:socket地址的长度
int accept(int sockfd , const struct sockaddr *addr , socklen_t *addrlen);
TCP服务器监听到用户请求后,调用accept();接收请求
sockfd:服务器的socket描述字
addr:服务器的socket地址
addrlen:服务器socket地址的长度
· 返回值类型:返回的是一个不同的socket,这个socket保存的是你客户端的socket信息
ssize_t read(int sockfd , void *buf , size_t count);
读取socket内容
sockfd:socket描述字
buf:缓冲区
count:缓冲区的长度
ssize_t write(int sockfd , void *buf , count);
写入socket内容
sockfd:socket描述字
buf:缓冲区
count:缓冲区长度
int close(int sockfd);
标记socket为关闭,使相应socket描述字的引用计数为-1,当引用计数为0时,触发TCP客户端向服务器发送终止连接请求
socket编程部分API的更多相关文章
- socket编程及API简介
什么是TCP/IP.UDP? TCP/IP(Transmission Control Protocol/Internet Protocol)即传输控制协议/网间协议,是一个工业标准的协议集,它是为广域 ...
- 在线服务之socket编程科普
简介 本篇文章是介绍一个典型的在线C++服务的最底层socket管理是如何实现的. 文章会从一个最简单的利用socket编程基础API的一个小程序开始,逐步引入现在典型的select,epoll机制, ...
- Socket编程实践(2) Socket API 与 简单例程
在本篇文章中,先介绍一下Socket编程的一些API,然后利用这些API实现一个客户端-服务器模型的一个简单通信例程.该例子中,服务器接收到客户端的信息后,将信息重新发送给客户端. socket()函 ...
- socket编程 ------ BSD socket API
伯克利套接字(Berkeley sockets),也称为BSD Socket.伯克利套接字的应用编程接口(API)是采用C语言的进程间通信的库,经常用在计算机网络间的通信. BSD Socket的应用 ...
- 【TCP/IP】之Java socket编程API基础
Socket是Java网络编程的基础,深入学习socket对于了解tcp/ip网络通信协议很有帮助, 此文讲解Socket的基础编程.Socket用法:①.主要用在进程间,网络间通信. 文章目录如下: ...
- Linux下的C Socket编程 -- 简介与client端的处理
Linux下的C Socket编程(一) 介绍 Socket是进程间通信的方式之一,是进程间的通信.这里说的进程并不一定是在同一台机器上也有可能是通过网络连接的不同机器上.只要他们之间建立起了sock ...
- socket编程学习step1
socket学习参考链接,赞一个:http://blog.csdn.net/hguisu/article/details/7445768 sockets(套接字)编程有三种,流式套接字(SOCK_ST ...
- socket编程基础
socket编程 什么是socket 定义 socket通常也称作套接字,用于描述IP地址和端口,是一个通信链的句柄,应用程序通常通过套接字向网络发出请求或者应答网络请求. socket起源于Unix ...
- Java Socket编程
Java最初是作为网络编程语言出现的,其对网络提供了高度的支持,使得客户端和服务器的沟通变成了现实,而在网络编程中,使用最多的就是Socket.像大家熟悉的QQ.MSN都使用了Socket相关的技术. ...
随机推荐
- canvas图表(4) - 散点图
原文地址:canvas图表(4) - 散点图 今天开始完成散点图,做完这一节,我的canvas图表系列就算是完成了,毕竟平时最频繁用到的就是这几类图表了:柱状,折线,饼图,散点.经过编写canvas图 ...
- 《Metasploit魔鬼训练营》第四章(上)
p128 wmap 和昨天一样,我用这些漏洞扫描工具去扫testfire.net或者owaspbwa都扫不出漏洞!不明白! 补充:原来是网络不知道啥时候自己断了.连上后再次扫描就成功了:
- P1132 数字生成游戏
题目请见:传送门 以下为题解,直接从洛谷上搬过来的,还专门改了markdown,(汗) 宽搜 with 一些技巧 由于查询量很大,所以要预先处理所有答案 预处理当然是用BFS,并同时进行delete, ...
- TFboy养成记 多层感知器 MLP
内容总结与莫烦的视频. 这里多层感知器代码写的是一个简单的三层神经网络,输入层,隐藏层,输出层.代码的目的是你和一个二次曲线.同时,为了保证数据的自然,添加了mean为0,steddv为0.05的噪声 ...
- Mina自定义协议简单实现
因公司需要做个电子秤自动称重系统,需要自定义协议实现,所以就用Mina简单实现了一下,有时间改成Netty版 服务端 package net.heartma.server;import java.io ...
- java第一阶段测试
一.选择题(35题 * 2分)1. 下列代码编译和运行的结果是:C public static void main(String[] args) { String[] elements = { & ...
- 基于 HTML5 Canvas 的 3D 模型列表贴图
少量图片对于我们赋值是没有什么难度,但是如果图片的量大的话,我们肯定希望能很直接地显示在界面上供我们使用,再就是排放的位置等等,这些都需要比较直观的操作,在实际应用中会让我们省很多力以及时间.下面这个 ...
- jQuery开发自定义插件 $.extend()与$.fn.extend()
jQuery extend()和jQuery.fn.extend() jQuery提供两个用于封装扩展的方法: 1.$.extend(); 扩展jQuery类方法,即jQuery全局方法 (在全局可直 ...
- PHP+Mysql基于事务处理实现转账功能的方法
<?php header("Content-Type:text/html;charset=utf-8"); $mysqli=new mysqli("localhos ...
- Codeforces 850C Arpa and a game with Mojtaba
题意:给定一个正整数序列,两人轮流对这个数列进行如下修改:选取一个素数p和一个整数k将序列中能整除p^k的数除以p^k,问谁有必胜策略. 借此复习一下sg函数吧,sg(x) = mex ( sg(y) ...