首先,建立python文件,代码如下:

#!/usr/bin/python
# -*-coding:utf-8-*-
 
import socket
 
import time
 
HOST = '192.168.3.26'   # 服务器的IP
 
PORT = 1234             # 服务器的post
 
Flag = True
 
while True:
 
    try:
 
        s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)  # 定义socket类型,网络通信,TCP
 
        s.connect(('192.168.3.26', 1234))  # 要连接的IP与端口
 
        # s.connect(('127.0.0.1', 6666))  #服务器和客户端都在一个系统下时使用的ip和端口
 
        Flag = True
 
    except socket.error as msg:
 
        print(msg)
 
        s.close()  # 关闭连接
 
        Flag = False
 
    while Flag:
 
        try:
            str1 = '123'
            str1 = str1.encode()
            s.sendall(str1)  # 发送数据
 
            time.sleep(1)  # 休眠3秒
 
            str2 = '6666'
            str2 = str2.encode()
            s.sendall(str2)  # 发送数据
 
            time.sleep(1)  # 休眠3秒
 
 
        except socket.error as msg:
 
            print(msg)
 
            s.close()  # 关闭连接
 
            Flag = False

 

 

成功图如下:

 
 
 
 

 

我的解决过程:

遇到的第一个难题:

IP地址和端口不知道该写谁的。一开始报错,因为我以为这两处要分别写客户端和服务器的IP地址和端口,所以我改来改去。最后知道,两处都要写服务器的IP地址和端口

 s.connect(('192.168.3.26', 1234))  # 要连接的IP与端口
HOST = '192.168.3.26'   # 服务器的IP

PORT = 1234             # 服务器的post

 

 

 

遇到的第二个难题:

运行不了,一直报错“  TypeError: a bytes-like object is required, not 'str'  ” 意思是“类型错误:需要类似字节的对象,而不是字符串

错误原因:

我们要传输的数据属于str,要将str字符转换成指定类型(如utf-8)的字节byte。

解决办法:

要将str转成encode()字节流。

 

因为python中的bytes和str两种数据类型。
所以:
1.我们向磁盘写文件时,传入的是字节流,要将str转成encode()字节流;
2.我们从网络或磁盘上读取的是字节流,数据是bytes,如果我们在代码要对它做其他操作,就要转成decode() 字符str
 
 
总结
1.掌握了python中的bytes和str两种类型转换的函数encode()、decode()
2.了解了socket类型
3.了解了网络协议的大概写法
 
 
over