初识Socket

简介:

什么是Socket?

   网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket。

Socket的英文原义是“孔”或“插座”。作为BSD UNIX的进程通信机制,取后一种意思。通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,可以用来实现不同虚拟机或不同计算机之间的通信。在Internet上的主机一般运行了多个服务软件,同时提供几种服务。每种服务都打开一个Socket,并绑定到一个端口上,不同的端口对应于不同的服务

 

上面是不是很乱?但是概念一定要了解

现在是初学,我把Socket理解为一个电话拨通电话,接听电话!通信的一个概念!

Socket在写的时候要记住:有发就有收,收发必相等!


socket_server

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#!/usr/bin/env python
#-*- coding:utf-8 -*-
import  socket
#创建socket对象
ck  =  socket.socket()
#通过IP&端口连接server
ck.connect(( '127.0.0.1' , 6666 ))
#发送消息给服务端
ck.sendall( 'hello server this is  Clinet' )
#接收服务端的消息并打印
server_answer  =  ck.recv( 1024 )
print  server_answer
#关闭连接
ck.close()


socket_client

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#!/usr/bin/env python
#-*- coding:utf-8 -*-
import  socket
#创建socket对象
ck  =  socket.socket()
#通过IP&端口连接server
ck.connect(( '127.0.0.1' , 6666 ))
#发送消息给服务端
ck.sendall( 'hello server this is  Clinet' )
#接收服务端的消息并打印
server_answer  =  ck.recv( 1024 )
print  server_answer
#关闭连接
ck.close()


执行流程图如下:

wKioL1cQrNDT1F0AAADAH4nZQ-w080.png



server端:

#创建socket对象sk = socket.socket(socket.AF_INET,socket.SOCK_STREAM)#socket.AF_INET  参数一#socket.SOCK_STREAM 参数二

参数一:地址簇

  socket.AF_INET IPv4(默认)
socket.AF_INET6 IPv6

  socket.AF_UNIX 只能够用于单一的Unix系统进程间通信

参数二:类型

  socket.SOCK_STREAM  流式socket , for TCP (默认)
socket.SOCK_DGRAM   数据报式socket , for UDP

  socket.SOCK_RAW 原始套接字,普通的套接字无法处理ICMP、IGMP等网络报文,而SOCK_RAW可以;其次,SOCK_RAW也可以处理特殊的IPv4报文;此外,利用原始套接字,可以通过IP_HDRINCL套接字选项由用户构造IP头。
socket.SOCK_RDM 是一种可靠的UDP形式,即保证交付数据报但不保证顺序。SOCK_RAM用来提供对原始协议的低级访问,在需要执行某些特殊操作时使用,如发送ICMP报文。SOCK_RAM通常仅限于高级用户或管理员运行的程序使用。
socket.SOCK_SEQPACKET 可靠的连续数据包服务

参数三:协议

  0  (默认)与特定的地址家族相关的协议,如果是 0 ,则系统就会根据地址格式和套接类别,自动选择一个合适的协议

在创建socket对象的时候一般使用默认即可:sk = socket.socket()



转载地址:http://www.cnblogs.com/luotianshuai/p/5058562.html




      本文转自027ryan  51CTO博客,原文链接:http://blog.51cto.com/ucode/1764233,如需转载请自行联系原作者


相关文章
|
3月前
|
Python
socket 服务
本示例展示了如何使用 Python 的 socket 模块创建一个简单的服务器。服务器绑定到本地主机的 12345 端口,监听客户端连接请求,并向每个连接的客户端发送欢迎消息,然后关闭连接。
126 59
|
3月前
|
Python
什么是 Socket
什么是 Socket。
70 5
|
9月前
|
网络协议 C++
什么是Socket?
Socket(套接字)是网络通信的基本单位,它允许在不同计算机之间进行数据交换。Socket在网络编程中起着至关重要的作用,它为应用程序提供了一个机制,通过网络发送和接收数据。简单地说,Socket是进程间双向通信的端点。
97 2
|
网络协议 Unix 程序员
socket到底是什么?
socket到底是什么?
124 1
|
网络协议 安全 前端开发
socket到底是什么? 2
socket到底是什么?
130 0
|
网络协议 安全 Unix
socket 到底是个啥
咸鱼将跟大家打开 socket 的神秘大门,不但要搞清楚 socket 的概念,最好还能够了解它的底层实现
|
网络协议
【Socket】实现MiniHttpServer
【Socket】实现MiniHttpServer
|
移动开发 缓存 网络协议
Socket总结
Socket总结
221 0
Socket总结
|
网络协议 Unix
一切皆Socket
“一切皆Socket!” 话虽些许夸张,但是事实也是,现在的网络编程几乎都是用的socket。 ——有感于实际编程和开源项目研究。   socket()函数介绍 socket函数介绍 函数原型 domain type protocol errno 示例   函数原型 socket()函数的原型如下,这个函数建立一个协议族为domain、协议类型为type、协议编号为protocol的套接字文件描述符。
1490 0
|
网络协议 Unix API

热门文章

最新文章