socket(转百度概念)

1. socket(插座),也称作套接字,用于描述IP地址和端口,是一个通信链的句柄。

     在Internet上得主机一般运行了多种服务软件,同时提供几种服务,每种服务都打开一个 socket,并绑定到一个端口,不同端口对应不同服务。

2. Socket利用网间网通信设施实现进程通信。

3. 在网间网内部,每一个socket用一个半相关描述:(协议,本地地址,本地端口),一个完整的socket有一个本地唯一的socket号,由操作系统分配。

4. APP通过socket向网络发出请求或者应答网络请求,以J2SDK-1.3为例,socket和server socket类库位于java.net包中,serversocket用于服务器端,socket是建立网络连接时使用的。链接成功时,APP两端都会产生一个socket实例,操作这个实例,完成会话,对于一个网络连接来说,套接字是平等的,client和server端都是通过socketlmpl类及其子类完成的。

5. socket api:java .net socket继承于java.lang.object,三个常用的方法如下: 

    a. accept方法用于阻塞,通过由循环产生,知道接收到连接,并返回一个客户端的socket对象实例;

    b. getinputstream方法获得网络连接输入,同时返回一个inputstream对象实例;

    c.  getoutputstream方法连接的另一端将得到输入,同时返回一个outputstream对象实例,其中getinputstream和getoutstream都可能会产生一个IOException,他必须被捕获,因为他们返回的流对象,通常都会被另一个流对象使用。

6. 根据连接启动的方式和本地套接字要连接的目标,连接过程为:服务器监听(不具体定位客户端套接字,而是等待,实时监控网络状态),客户端请求(描述要连接的服务器套接字,指定地址和端口,发出俩接请求),连接确认(服务器端套接字监听到客户端请求,就响应客户端套接字的请求,建立一个新的线程,吧服务器端套接字的描述发给客户端,一旦客户端确认了次描述,就连接好了,而服务器端继续监听其他客户端套接字的连接请求)。

7. 开发socket模型的app:

     S:使用serversocket监听指定端口,端口可以随意指定,客户连接后,会话产生,完成后关闭连接。

     C:使用socket对网络上某个S的端口发连接请求,成功后打开会话,完成后关闭连接,不需要指定打开特定端口,通常临时、动态分配;、

     socket接口是tcp/ip的api,定义了许多函数和例程,最初是放在unix上的,网络上的socket传输是一种特殊的I/O,是一种文件描述符。也有一个类似的打开文件的函数调用socket(),该函数返回一个整型的socket描述符,随后的连接建立、数据传输都是通过该socket实现的。

8. 应用程序调用socket函数创建一个能够进行网络通信的套接字。int socket (int domain,int type,int protocol)

9. socket函数

应用 程序调用socket函数来创建一个能够进行 网络通信套接字

头文件

#include <sys/types.h>

#include <sys/socket.h>

函数原型 int socket(int domain, int type, int protocol);

第一个 参数指定应用 程序使用的 通信协议的协议族,对于TCP/IP协议族,该参数置AF_INET;

第二个 参数指定要创建的 套接字类型,流套接字类型为SOCK_STREAM、数据报套接字类型为SOCK_DGRAM、原始套接字SOCK_RAW(WinSock接口并不适用某种特定的协议去 封装它,而是由 程序自行处理数据包以及协议首部);

第三个 参数指定应用 程序所使用的 通信协议。此 参数可以指定单个协议系列中的不同 传输协议。在Internet通讯域中,此 参数一般取值为0,系统会根据 套接字的类型决定应使用的 传输层协议。

该函数如果调用成功就返回新创建的 套接字的描述符,如果失败就返回INVALID_SOCKET。(Linux下失败返回-1) 套接字描述符是一个整数类型的值。每个进程的进程空间里都有一个 套接字描述符表,该表中存放着套接字描述符和套接字 数据结构的对应关系。该表中有一个字段存放新创建的 套接字的描述符,另一个字段存放套接字 数据结构地址,因此根据套接字描述符就可以找到其对应的套接字数据结构。每个进程在自己的进程空间里都有一个 套接字描述符表但是套接字数据结构都是在 操作系统内核缓冲里。

10. 使用PHP开启一个socket监听实例程序:

<?php
$host="192.168.1.99",
$port=1234;
set_time_limit(0);
$socket=socket_create(AF_INET,SOCK_STREAM,0)OR DIE("Could not create socket\n");
$result=socket_bind($socket,$host,$port)or die("could not bind to socket\n");
$result=socket_listen($socket,3)or die("could not set up socket listener\n");
$spawn=socket_accept($socket) or die("could not accept incoming connection\n");
$input=socket_read($spawn,1024)or die("could not read input\n");
$input=trim($input);
$output=strrev($input)."\n",
socket_write($spawn,$output,strlen($output))or die("could not write output\n");
socket_close($spawn);
socket_close($socket);
>
socket          


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值