Python之——Socket编程

标签: Python
29人阅读 评论(1) 收藏 举报
分类:

转载请注明出处:https://blog.csdn.net/l1028386804/article/details/79959156

今天,就给大家带来一篇利用Python3.6实现的Socket编程,这里列举一个TCP实例和UDP实例,同时,利用encode()和decode()对网络消息进行编码和解码操作。

实例说明:TCP实例和UDP实例实现的功能均如下:

1)客户端对发送的消息进行编码(encode())后发送到服务端

2)服务端接收客户端发来的消息

3)服务端对接收的消息解码(decode())

4)服务端拼接客户端发来的消息(格式为:[时间]+客户端发来的消息)

5)服务端对拼接后的消息进行编码(encode())后发送给客户端

6)客户端接收服务端发送的消息,解码(decode())并打印出来

一、TCP实例

1、TCP服务端

'''
Created on 2018年4月16日

@author: liuyazhuang
'''
from socket import *
from time import ctime

HOST = ''
PORT = 21567
BUFSIZ = 1024
ADDR = (HOST, PORT)

tcp_server_socket = socket(AF_INET, SOCK_STREAM)
tcp_server_socket.bind(ADDR)
tcp_server_socket.listen(5)

while True:
    print("waiting for connecting...")
    tcp_client_socket, addr = tcp_server_socket.accept()
    print("...connected from addr: ", addr)
    
    while True:
        data = tcp_client_socket.recv(BUFSIZ).decode()
        if not data:
            break
        tcp_client_socket.send(('[%s] %s' %(ctime(),data)).encode())
        
    tcp_client_socket.close()
tcp_server_socket.close()

2、TCP客户端

'''
Created on 2018年4月16日

@author: liuyazhuang
'''
from socket import *

HOST = "127.0.0.1"
PORT = 21567
BUFSIZ = 1024
ADDR = (HOST, PORT)

tcp_client_socket = socket(AF_INET, SOCK_STREAM)
tcp_client_socket.connect(ADDR)

while True:
    data = input('> ')
    if not data:
        break;
    tcp_client_socket.send(data.encode())
    data = tcp_client_socket.recv(BUFSIZ).decode()
    if not data:
        break;
    print(data)
tcp_client_socket.close()

二、UDP实例

1、UDP服务端

'''
Created on 2018年4月16日

@author: liuyazhuang
'''
from socket import *
from time import ctime

HOST = ''
PORT = 21567
BUFSIZ = 1024
ADDR  = (HOST, PORT)

udp_server_socket = socket(AF_INET, SOCK_DGRAM)
udp_server_socket.bind(ADDR)

while True:
    print('waiting for message...')
    data, addr = udp_server_socket.recvfrom(BUFSIZ)
    data = data.decode()
    udp_server_socket.sendto(('[%s] %s' %(ctime(),data)).encode(), addr)
    print("...received from and sent to: " , addr)
    
udp_server_socket.close()

2、UDP客户端

'''
Created on 2018年4月16日

@author: liuyazhuang
'''
from socket import *

HOST = '127.0.0.1'
PORT = 21567
BUFSIZ = 1024
ADDR = (HOST, PORT)

udp_client_socket = socket(AF_INET, SOCK_DGRAM)
while True:
    data = input("> ")
    if not data:
        break;
    udp_client_socket.sendto(data.encode(), ADDR)
    data, addr = udp_client_socket.recvfrom(BUFSIZ)
    if not data:
        break;
    data = data.decode()
    print(data)

udp_client_socket.close()

查看评论

用BCB写一个最简单的多线程

下面是用BCB写的最简单的一个多线程小程序//.cpp中的线程描述_fastcall TMyThread::TMyThread(void):TThread(true){FreeOnTerminate=...
  • yeqiufeng
  • yeqiufeng
  • 2003-09-23 01:27:00
  • 1346

Python简单的SOCKET编程

Python是一个强大的网络编程工具。大家都知道,在网络编程中的一个基本主件就是套接字(SOCKET)。套接字到底是什么呢?可以这样说,就是两个程序之间的信息通道而已。比如两个人打电话,必须建立有线或...
  • Chen_dSir
  • Chen_dSir
  • 2016-07-22 10:35:39
  • 550

python socket 网络编程 教程

  • 2013年10月16日 14:52
  • 269KB
  • 下载

python实现云盘 代码及实验报告

  • 2017年06月09日 15:08
  • 1.47MB
  • 下载

python学习资料,python网络编程学习

  • 2011年08月12日 10:30
  • 147KB
  • 下载

python多线程socket编程--多客户端接入

Python socket通信,python socket编程,python多线程,python socket通信,python SocketServer...
  • Lockey23
  • Lockey23
  • 2017-09-09 15:58:38
  • 2814

python socket编程之双方相互通信简单实例

实例说明: 本实例实现真实局域网内两个物理主机的相互通信,两个物理主机的操作系统分别是windows8.1和windows10。 实例代码: 客户端 import socket addr = ('21...
  • Vinsuan1993
  • Vinsuan1993
  • 2017-10-02 10:00:28
  • 1017

Python Socket编程:发送MIME协议邮件

Socket编程简介写完程序也还是不理解什么事Socket编程,但在知乎里看到的一个问题里面的回答很不错,这里分享一下:Socket编程简介SMTP简介 SMTP(Simple Mail Tran...
  • PoetMeng
  • PoetMeng
  • 2016-12-07 16:31:05
  • 575

python socket编程基础知识

网络编程基础总结IP地址分类使用:A类:二进制0开头(1-127) B类:二进制10开头(128-191) C类:二进制110开头(192-223) D类:二进制1110开头(224-239) ...
  • xsj_blog
  • xsj_blog
  • 2017-02-27 01:13:34
  • 271

Python之socket

Socket 也被称为套接字,用于描述IP地址和端口,是一个通信链上的句柄,应用程序通过socket向网络发出请求或者应答网络请求   一 Socket 和 File I/O 比较 File模块...
  • zhanglh046
  • zhanglh046
  • 2017-12-04 22:28:35
  • 91
    个人资料
    专栏达人 持之以恒
    等级:
    访问量: 238万+
    积分: 2万+
    排名: 211
    博客专栏
    MySQL

    文章:136篇

    阅读:313424
    Hadoop生态

    文章:149篇

    阅读:236211
    Java

    文章:159篇

    阅读:596409
    J2EE

    文章:76篇

    阅读:311009
    JVM

    文章:15篇

    阅读:55465
    Linux

    文章:85篇

    阅读:256056
    Web前端

    文章:22篇

    阅读:93680
    Mycat

    文章:20篇

    阅读:31933
    设计模式

    文章:22篇

    阅读:52692
    Memcached

    文章:9篇

    阅读:53583
    Redis

    文章:18篇

    阅读:107505
    Netty

    文章:1篇

    阅读:2301
    JMS

    文章:13篇

    阅读:13576
    Dubbo

    文章:20篇

    阅读:57248
    Nginx

    文章:19篇

    阅读:67111
    搜索优化

    文章:24篇

    阅读:28707
    Python

    文章:55篇

    阅读:45471
    Android

    文章:80篇

    阅读:254870
    算法

    文章:1篇

    阅读:637
    MongoDB

    文章:29篇

    阅读:1276
    最新评论