Python掌握Socket网络编程

1、
# coding : UTF-8
import socket
SERVER_HOST = "localhost" # 127.0.0.1(本机IP)
SERVER_PORT = 8080 # 服务绑定端口
def main(): # 主函数
    # socket网络服务在每一次处理完成之后一定要使用close()方法进行关闭,所以可以利用with结构来进行定义
    with socket.socket() as server_socket: # 创建了一个服务端的Socket
        server_socket.bind((SERVER_HOST, SERVER_PORT)) # 绑定本机的8080端口
        server_socket.listen() # 开启监听
        print("【服务端】服务器启动完毕,在“%s”端口上监听,等待客户端连接 ...." % SERVER_PORT)
        # 当有客户端连接之后,那么会解除当前的阻塞状态,同时也可以获得客户端的Socket和地址
        client_conn, address = server_socket.accept() # 进入到阻塞状态
        with client_conn: # 进行客户端的处理
            print("【服务端】客户端连接到服务器端,客户端的地址为:%s、连接端口:%s" % address)
            client_conn.send("沐言优拓:www.yootk.com".encode("UTF-8")) # 向客户端进行请求响应
if __name__ == "__main__": # 判断程序执行名称
    main() # 调用主函数

2、telnet localhost 8080

3、
# coding : UTF-8
import socket
SERVER_HOST = "127.0.0.1" # 网络服务器的主机名称或IP地址
SERVER_PORT = 8080 # 服务器连接端口
def main(): # 主函数
    with socket.socket() as client_socket: # 建立客户端Socket
        client_socket.connect((SERVER_HOST, SERVER_PORT)) # 连接服务端
        print("服务器端响应数据:%s" % client_socket.recv(30).decode("UTF-8"))
if __name__ == "__main__": # 判断程序执行名称
    main() # 调用主函数

4、
echo 沐言优拓:www.yootk.com

5、
# coding : UTF-8
import socket
SERVER_HOST = "localhost" # 127.0.0.1(本机IP)
SERVER_PORT = 8080 # 服务绑定端口
def main(): # 主函数
    # socket网络服务在每一次处理完成之后一定要使用close()方法进行关闭,所以可以利用with结构来进行定义
    with socket.socket() as server_socket: # 创建了一个服务端的Socket
        server_socket.bind((SERVER_HOST, SERVER_PORT)) # 绑定本机的8080端口
        server_socket.listen() # 开启监听
        print("【服务端】服务器启动完毕,在“%s”端口上监听,等待客户端连接 ...." % SERVER_PORT)
        # 当有客户端连接之后,那么会解除当前的阻塞状态,同时也可以获得客户端的Socket和地址
        client_conn, address = server_socket.accept() # 进入到阻塞状态
        with client_conn: # 进行客户端的处理
            print("【服务端】客户端连接到服务器端,客户端的地址为:%s、连接端口:%s" % address)
            while True: # 不断的进行信息的接收与响应
                data = client_conn.recv(100).decode("UTF-8") # 接收客户端发送来的数据
                if data.upper() == "BYEBYE": # 客户端输入的是一个此指令
                    client_conn.send("exit".encode("UTF-8")) # 向客户端进行请求响应
                    break # 结束while循环
                else: # 进行正常的响应
                    client_conn.send(("【ECHO】%s" % data).encode("UTF-8"))  # 向客户端进行请求响应
if __name__ == "__main__": # 判断程序执行名称
    main() # 调用主函数

6、telnet localhost 8080

7、
# coding : UTF-8
import socket
SERVER_HOST = "127.0.0.1" # 网络服务器的主机名称或IP地址
SERVER_PORT = 8080 # 服务器连接端口
def main(): # 主函数
    with socket.socket() as client_socket: # 建立客户端Socket
        client_socket.connect((SERVER_HOST, SERVER_PORT)) # 连接服务端
        while True: # 客户端一定要不断的与服务端进行交互
            input_data = input("请输入要发送的数据(输入“byebye”结束):") # 键盘输入
            client_socket.send(input_data.encode("UTF-8")) # 数据发送
            echo_data = client_socket.recv(100).decode("UTF-8") # 回应数据
            if echo_data.upper() == "EXIT": # 结束
                break # 断开循环
            else: # 正常响应
                print(echo_data) # 输出服务端返回内容
if __name__ == "__main__": # 判断程序执行名称
    main() # 调用主函数

8、
# coding : UTF-8
import socket, multiprocessing
SERVER_HOST = "localhost" # 127.0.0.1(本机IP)
SERVER_PORT = 8080 # 服务绑定端口

def echo_handle(client_conn, address):  # 进程处理函数
    print("【服务端】客户端连接到服务器端,客户端的地址为:%s、连接端口:%s" % address)
    with client_conn:  # 进行客户端的处理
        while True:  # 不断的进行信息的接收与响应
            data = client_conn.recv(100).decode("UTF-8")  # 接收客户端发送来的数据
            if data.upper() == "BYEBYE":  # 客户端输入的是一个此指令
                client_conn.send("exit".encode("UTF-8"))  # 向客户端进行请求响应
                break  # 结束while循环
            else:  # 进行正常的响应
                client_conn.send(("【ECHO】%s" % data).encode("UTF-8"))  # 向客户端进行请求响应

def main(): # 主函数
    # socket网络服务在每一次处理完成之后一定要使用close()方法进行关闭,所以可以利用with结构来进行定义
    with socket.socket() as server_socket: # 创建了一个服务端的Socket
        server_socket.bind((SERVER_HOST, SERVER_PORT)) # 绑定本机的8080端口
        server_socket.listen() # 开启监听
        print("【服务端】服务器启动完毕,在“%s”端口上监听,等待客户端连接 ...." % SERVER_PORT)
        while True: # 不断的进行请求的接收
            # 当有客户端连接之后,那么会解除当前的阻塞状态,同时也可以获得客户端的Socket和地址
            client_conn, address = server_socket.accept() # 进入到阻塞状态
            process = multiprocessing.Process(target=echo_handle, args=(client_conn, address,),
                                              name="客户端进程-%s" % address[1]) # 定义进程
            process.start() # 启动进程
if __name__ == "__main__": # 判断程序执行名称
    main() # 调用主函数

9、
# coding : UTF-8
import socket
SERVER_HOST = "localhost" # 127.0.0.1(本机IP)
SERVER_PORT = 8080 # 服务绑定端口
def main(): # 主函数
    # socket.AF_INET使用IPV4网络协议来进行服务端创建;
    # socket.SOCK_DGRAM:创建一个数据报协议的网络端(UDP)
    with socket.socket(socket.AF_INET, socket.SOCK_DGRAM) as server_socket: # 创建了一个服务端的Socket
        server_socket.bind((SERVER_HOST, SERVER_PORT)) # 绑定本机的8080端口
        print("【服务端】服务器启动完毕,在“%s”端口上监听,等待客户端连接 ...." % SERVER_PORT)
        while True: # 不断的进行数据的接收
            data, addr = server_socket.recvfrom(30) # 接收客户端发送数据
            print("【服务端】客户端连接到服务器端,客户端的地址为:%s、连接端口:%s" % addr)
            echo_data = ("【ECHO】%s" % data.decode("UTF-8")).encode("UTF-8") # 响应数据
            server_socket.sendto(echo_data, addr) # 将内容响应到发送端上
if __name__ == "__main__": # 判断程序执行名称
    main() # 调用主函数

10、
# coding : UTF-8
import socket
SERVER_HOST = "127.0.0.1" # 网络服务器的主机名称或IP地址
SERVER_PORT = 8080 # 服务器连接端口
def main(): # 主函数
    with socket.socket(socket.AF_INET, socket.SOCK_DGRAM) as client_socket: # 建立客户端Socket
        while True: # 客户端一定要不断的与服务端进行交互
            input_data = input("请输入要发送的数据:") # 键盘输入
            if input_data: # 有数据输入
                client_socket.sendto(input_data.encode("UTF-8"), (SERVER_HOST, SERVER_PORT)) # 数据发送
                echo_data = client_socket.recv(100).decode("UTF-8") # 回应数据
                print("服务端响应数据:%s" % echo_data) # 输出内容
            else: # 没有输入内容
                break # 退出交互
if __name__ == "__main__": # 判断程序执行名称
    main() # 调用主函数

11、
# coding : UTF-8
import socket
BROADCAST_CLIENT_ADDR = ("0.0.0.0", 21567) # 客户端绑定地址
def main(): # 主函数
    with socket.socket(socket.AF_INET, socket.SOCK_DGRAM) as client_socket: # 建立客户端Socket
        client_socket.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1) # 设置广播模式
        client_socket.bind(BROADCAST_CLIENT_ADDR) # 绑定广播客户端地址
        while True: # 不断进行内容的接收
            message, address = client_socket.recvfrom(100) # 接收广播数据
            print("消息内容:%s、消息来源IP:%s、消息来源端口:%s" % (message.decode("UTF-8"), address[0], address[1]))
if __name__ == "__main__": # 判断程序执行名称
    main() # 调用主函数


12、
# coding : UTF-8
import socket
BROADCAST_SERVER_ADDR = ("", 21567) # 广播地址
def main(): # 主函数
    with socket.socket(socket.AF_INET, socket.SOCK_DGRAM) as server_socket: # 创建了一个服务端的Socket
        server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1) # 设置广播模式
        server_socket.sendto("Test:www.test.com".encode("UTF-8"), BROADCAST_SERVER_ADDR)
if __name__ == "__main__": # 判断程序执行名称
    main() # 调用主函数

你可能感兴趣的:(python,服务器)