python socket 编程

本文介绍如何使用 Python 的 socket 模块实现一个简单的聊天室应用,包括服务器端和客户端的代码示例。该聊天室能够接收客户端连接,并通过多线程方式处理多个客户端的输入,将接收到的消息广播给所有在线用户。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

服务器端 

#!/usr/bin/env python
# encoding: utf-8

import socket
import sys
# import threading 

HOST = 'localhost'
PORT = 8888

try:
    clientsock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
except socket.error, msg:
    print " failed to create socket. error code: " + str(msg[0]) + ", error msg: " + msg[1]
    sys.exit()
print "socket created "

try:
    remoteip = socket.gethostbyname(HOST)
except socket.gaierror:
    print " hostname could not be resolved. exiting. "
    sys.exit()
print "ip address of " + HOST + "is " + remoteip

clientsock.connect((remoteip, PORT))
print " connected to " + HOST + " on ip " + remoteip

# for f in open("qsort.py"):
#     print f,
#     message = f
#     
#     try:
#         clientsock.sendall(message)
#     except socket.error:
#         print " send failed "
#         sys.exit()

def readfile(filename):
    f = file(filename)
    while True:
        line = f.readline()
        if len(line) == 0:
            break
        print line, 
    f.close()
print " sys.argv[1] ==========", sys.argv[1]
message = sys.argv[1]
try:
    clientsock.sendall(message)
except socket.error:
    print " send failed"
    sys.exit()
    
print " message send successfully "
reply = clientsock.recv(1024 * 4)
print reply
clientsock.close()



客户端

#!/usr/bin/env python
# encoding: utf-8

import socket
import sys
import threading 

HOST = ''
PORT = 8888

serversock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
print "socket created"
try:
    serversock.bind((HOST, PORT))
except socket.error, msg:
    print " bind failed . error code: " + str(msg[0]) + " error msg: " + msg[1]
    sys.exit()
print " socket binded "

serversock.listen(10)
print "socket now listening "

def client_thread(conn):
    conn.send("welcome to the server !, type letters and enter \n")
    while True:
        data = conn.recv(1024)
        reply = "server| " + data
        f = open("receive.txt", 'a')
        print >> f, data
        f.close()
        if not data:
            break
        conn.sendall(reply)
    conn.close()

while True:
    conn, addr = serversock.accept()
    print "connected with " + addr[0] + ": " + str(addr[1])
    threading._start_new_thread(client_thread, (conn, ))

serversock.close()


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值