python socket编程

279 阅读1分钟

1.打开一个socket第一步需要知道目标计算机的ip地址和端口号,再指定协议类型; 2.套接字常被理解为进程间通信的方式,可以在同一个机器的不同进程也可以在不同机器之间的进程; 3.创建socket使用socket模块的socket方法: import socket s = socket.socket() 4.socket方法传入的参数:socket_family:协议,socket_type:协议类型(tcp udp。。),protocol:类型

TCP编程:

客户端:

#!/usr/bin/python
# -*- coding: UTF-8 -*-
import time

import socket
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
#建立连接
s.connect(("127.0.0.1",6666))
count = 0

while count <= 10:
    #发送数据
    msg = "'hello services!'"
    s.send(msg.encode('utf-8'))
    #接收数据
    d = s.recv(1024)
    da = d.decode()
    print(da)
    count += 1
#关闭连接
s.close()

服务器端:

#!/usr/bin/python
# -*- coding: UTF-8 -*-

import socket
import time

s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
#建立连接
s.bind(('127.0.0.1',6666))
s.listen()
print('listening..')
while True:
    sock,addr = s.accept()
    print(addr)
    while True:
        try:
            data = sock.recv(1024)  # 接收数据
            print('recive:', data.decode())  # 打印接收到的数据
            time.sleep(3)
            sock.send("hello client!".encode('utf-8'))  # 然后再发送数据
        except:
            print('关闭了正在占线的链接!')
            break
    sock.close()
s.close()

UDP编程:

客户端:

import socket
udpsocket = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
udpsocket.sendto("hello service!".encode(),("127.0.0.1",7788))
d = udpsocket.recvfrom(1024)
print(d)
udpsocket.close()

服务器端:

import socket
udpsocket = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
udpsocket.bind(("127.0.0.1",7788))
r = udpsocket.recvfrom(1024)
print(r)
c,d = r
udpsocket.sendto("hello client!".encode(),d)
print(c.decode())
udpsocket.close()