socket树莓派c语言,socket通信
## Socket
百度百科上对Socket的解释是:Socket通常称作“套接字”,用于描述IP地址和端口,是一个通信链的句柄,可以用来实现不同虚拟机或不同计算机之间的通信。
## Socket通信
下面图是socket服务器与客户端通信的过程,接下来我们简单讲一下编程
使用socket通信,首先导入socket模块
```python
import socket
```
### TCP服务器
1. 服务器创建套接字,绑定套接字到本地IP与端口
socket(family, type[, protocal])使用给定的套接族,套接字类型,协议编号(默认为0)来创建套接字。
```python
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind()
```
2. 开始监听链接
s.listen(backlog)
backlog为拒绝链接前,系统可以挂起的最大连接数,至少为1。
```python
s.listen(2)
```
3. 进入循环,不断接收客户端的链接请求
```python
while True:
s.accept()
```
accept()接受TCP链接并返回(conn, address),其中conn是新的套接字对象,可以用来接收和发送数据,address是链接客户端的地址。
4. 接收客户端传来的数据,并且给对方发数据
```python
s.recv()
s.sendall()
```
注意:
服务器与客户端不能直接发送列表,元素,字典等带有数据类型的格式,发送的内容必须是字符串数据。
5. 传输完毕后,关闭套接字。
```python
s.close()
```
#### 简单的服务器端代码
```python
import socket
HOST, PORT = '', 8000
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((HOST, PORT))
s.listen(5)
print "Server start at:%s:%s" %(HOST, PORT)
print "wait for connection..."
while True:
conn, addr = s.accept()
print "Connected", addr
while True:
data = conn.recv(1024)
print data
conn.send("server received you message.")
conn.close()
s.close()
```
TCP客户端
1. 创建套接字并链接至远端地址(服务器)
```python
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect()
```
客户端调用connect()方法来建立与服务器的链接,并开始三次握手。握手保证了客户端可以正常连接到服务器,反之亦然。
2. 连接后发送数据和接收数据
```python
s.sendall()
s.recv()
```
3. 传输完毕后关闭套接字
```python
s.close()
```
#### 简单的客户端代码
```python
import socket
HOST, PORT = '192.168.0. 118', 8000
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((HOST, PORT))
while True:
cmd = raw_input("Input msg:")
s.send(cmd)
data = s.recv(1024)
print data
s.close()
```
参考:https://blog.51cto.com/loufeng/2340821
socket树莓派c语言,socket通信相关推荐
- go语言socket通信初试
2019独角兽企业重金招聘Python工程师标准>>> 听说go的在系统性能方面有很大的优势,最近对go语言产生了极大的兴趣,相对现有的项目用go改造,原有的项目用的ace框架编写的 ...
- C语言 socket编程实例
C语言 socket编程实例 一. 面向连接的流式套接字 C/S 例子 二. 非阻塞的多人聊天服务器端例子 三. 简单的 IPv6 UDP socket编程 四.使用wireshark抓包分析tcp协 ...
- C语言socket accept()函数(提取出所监听套接字的等待连接队列中第一个连接请求,创建一个新的套接字,并返回指向该套接字的文件描述符)
文章目录 名称 使用格式 功能参数描述 参数 sockfd addr addrlen 返回值 示例 man 2 文档中的accept解释 错误处理 名称 accept() 接收一个套接字中已建立的连接 ...
- Java语言Socket接口用法详解
Socket接口用法详解 在Java中,基于TCP协议实现网络通信的类有两个,在客户端的Socket类和在服务器端的ServerSocket类,ServerSocket类的功能是建立一个Serve ...
- python共享内存通信mapofview_python map eval strPython socket模块实现的udp通信功能示例...
本文实例讲述了Python socket模块实现的udp通信功能.分享给大家供大家参考,具体如下: socket介绍 socket(简称 套接字) 是进程间通信的一种方式,它与其他进程间通信的一个主要 ...
- C语言Socket编程(计算机网络作业)
最近我计算机网络课程要做作业了,没办法跟着老师一步一步的写C语言的代码,使用的计算就是Socket通信发送消息:代码实现的功能很简单,客户端向服务器端发送消息,服务器端接收客户端发来的消息,并且输出显 ...
- c语言socket通讯和进行进行大文件分片传输
c语言socket通讯和进行进行大文件分片传输 server端代码和client端代码 在windows上创建Cygwing工程11socket-server,创建完成后启动工程看不到效果,必须放到l ...
- 【socket】C语言的Socket网络编程
目录 Socket网络编程 1.网络知识 网络中进程之间如何通信? 什么是Socket? socket一词的起源 怎么理解端口? 怎么理解socket ? 2. 客户/服务器模式 2.1 服务器端: ...
- socket网络编程及通过socket接口实现一个自我通信的简易UDP服务器
网络编程socket基础 认识socket套接字 先用一张图引出socket的内容 根据上面的图示我们可以知道socket其实是位于应用层与传输层之间的一层软件抽象层.它是一组接口,在后面的部分我们会 ...
最新文章
- 入手ipod touch4
- org.apache.jasper.JasperException: /jsp/menu.jsp (line: 8, column: 1) Page directive
- 发表学术论文必须做的十件事(下)
- go语言buffio与继承
- BERT在多模态领域中的应用
- 如何使用R语言在SAP Analytics Cloud里绘制各种统计图表
- 客户端的socket是否需要bind?
- 轻量高效的开源JavaScript插件和库 【转】
- 掌握 Ajax,第 11 部分: 服务器端的 JSON
- python的基础 杂项(十四)
- JavaWeb — 解决请求前与请求后中文乱码的问题
- easyui ---- jEasyUI-定制提示信息面板组件
- Deepin20.5安装maven
- 【linux内核分析与应用-陈莉君】物理内存分配与回收机制下
- number of splits 划分的条件
- 50欧姆系统的由来的小故事
- 男人不能没钱女人不能没爱
- 点击复制微信号并跳转到微信
- sql 查询某个字段 出现次数 或者 次数大于1 或者 出现次数最多
- Android StatusBar 黑底白字
热门文章
- 集成腾讯互动直播之大咖模式采坑记录
- SM2 签名预处理操作
- 计算机毕业设计ssm图书推荐系统93gei系统+程序+源码+lw+远程部署
- 佳能Canon PIXMA TS8260 打印机驱动
- c#判断输入是否为数字类型
- LintCode 1228. 可怜的猪 JavaScript算法
- 业七业八结合兵法谈下棋
- 2021-05-24 Hikvision DS-TVL224-4-5Y Python 显示部分驱动代码
- 提取EPSON机器人示教点位pts文件中的点位信息
- No suitable application records were found. Verify your bundle identifier 'com.aaa.bbb