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函数
头文件#include <sys/types.h>#include <sys/socket.h>函数原型 int socket(int domain, int type, int protocol);
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