python--DenyHttp项目(1)--socket编程:客户端与服务器端

查找了许多资料,实现了客户端与服务器端的连接,通过虚拟机进行测试

服务器端IP:192.168.37.129 端口1122

客户端IP:  192.168.37.1 端口1122

Server:

#coding:utf-8
from socket import *
class Dserver():
    def __init__(self):
        self.HOST = ‘192.168.37.129‘
        self.PORT = 1122
        self.BUFSIZE = 1024
        self.ADDR = (self.HOST, self.PORT)
        self.sock = socket(AF_INET, SOCK_STREAM)

        self.sock.bind(self.ADDR)
    def listener(self):

        self.sock.listen(5)

        STOP_CHAT = False
        while not STOP_CHAT:
            print(‘等待接入,侦听端口:%d‘ % (self.PORT))
            topClientSock, addr = self.sock.accept()
            print(‘接受连接,客户端地址:‘,addr[0])
            while True:
                try:
                    data = topClientSock.recv(self.BUFSIZE)
                except:
                    topClientSock.close()
                    print("服务器关闭!")
                    break
                if not data:
                    print("数据为空")
                    break
                s=‘把服务器收到的从%s发送给我的信息:%s 发回来‘ %(addr[0],data.decode(‘utf-8‘))
                print(s)
                topClientSock.send(s.encode(‘utf-8‘))

                print(data.decode(‘utf-8‘))
                STOP_CHAT=(data.decode(‘utf-8‘).upper()=="QUIT")
                if STOP_CHAT:
                    break

        topClientSock.close()
        self.sock.close()
if __name__ == ‘__main__‘:
    serverDemo = Dserver()
    serverDemo.listener()

  Client:

#coding:utf-8
from socket import *
class Dclient():
    def __init__(self):
        self.HOST = ‘192.168.37.129‘
        self.PORT = 1122
        self.BUFSIZE = 1024
        self.ADDR = (self.HOST, self.PORT)
    def listener(self):
        self.client = socket(AF_INET,SOCK_STREAM)
        self.client.connect(self.ADDR)

        while True:
            data = input(‘>‘)
            if not data:
                break
            self.client.send(data.encode(‘utf-8‘))
            print(‘发送消息给%s: %s‘ % (self.HOST, data))
            if data.upper() == ‘QUIT‘:
                break
            data = self.client.recv(self.BUFSIZE)
            if not data:
                break
            print(‘接受的消息  %s‘ % (data.decode(‘utf-8‘)))

if __name__ == ‘__main__‘:
    clientDemo = Dclient()
    clientDemo.listener()

测试数据:

时间: 2024-10-19 00:41:07

python--DenyHttp项目(1)--socket编程:客户端与服务器端的相关文章

socket编程-客户端向服务器端发送某目录下的所有文件名

服务器端: import socket if __name__ == '__main__': server = socket.socket() server.bind(('127.0.0.1',9999)) server.listen() s1, raddr = server.accept() while True: data = s1.recv(1024) strdata = data.decode() if strdata == 'end': break print(strdata) #my

【爬坑】Python 3.6 在 Socket 编程时出现类型错误 TypeError: a bytes-like object is required, not 'str'

1. 问题描述 Python 3.6 在 Socket 编程时出现错误如下 Traceback (most recent call last): File "F:/share/IdeaProjects/test/mypython/test/test10_tcpclient.py", line 17, in <module> sock.send(str) TypeError: a bytes-like object is required, not 'str' Process

Python(七)Socket编程、IO多路复用、SocketServer

本章内容: Socket IO多路复用(select) SocketServer 模块(ThreadingTCPServer源码剖析) Socket socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,应用程序通常通过"套接字"向网络发出请求或者应答网络请求. 功能: sk = socket.socket(socket.AF_INET,socket.SOCK_STREAM,0) 参数一:地址簇 socket.AF_INET IPv4(默认)

python网络编程之socket编程

一 客户端/服务器架构 即C/S架构,包括 1.硬件C/S架构(打印机) 2.软件C/S架构(web服务) 美好的愿望: 最常用的软件服务器是 Web 服务器.一台机器里放一些网页或 Web 应用程序,然后启动 服务.这样的服务器的任务就是接受客户的请求,把网页发给客户(如用户计算机上的浏览器),然 后等待下一个客户请求.这些服务启动后的目标就是"永远运行下去".虽然它们不可能实现这样的 目标,但只要没有关机或硬件出错等外力干扰,它们就能运行非常长的一段时间. 生活中的C/S架构: 商

Python基础之(Socket编程)

一.什么是Socket Socket又称为套接字,它是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口.在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议.所以,我们无需深入理解tcp/udp协议,socket已经为我们封装好了,我们只需要遵循socket的规定去编程,写出的程序自然就是遵循tcp/udp标准的. UNIX BSD发明了socket这种东

Python入门:tcp socket编程

初学脚本语言python,测试可用的tcp通讯程序: 服务器: #!/usr/bin/env python # -*- coding: utf-8 -*- import socket import threading import time def tcplink(sock, addr): print('Accept new connection from %s:%s...' % addr); sock.send(b'Welcome!!!'); while True: data = sock.r

VII Python(9)socket编程

socket编程: 网络基础: TCP/IP: socket模型: python socket C/S开发: 非阻塞(select.poll.epoll) 网络基础: OSI七层协议.TCP/IP分层 注: 物理层(数据之间比特流的传输.物理接口.电气特性:硬件接口标准,如RJ45水晶头.无线网络传输802.11b等): 数据链路层(组帧,进行硬件地址寻址,差错校验等功能:ARP.RARP:单个链路上数据的传输,如传输依赖的是光纤.双绞线.还是无线等方式): 网络层(进行逻辑地址寻址,实现不同网

iOS从零开始学习socket编程——HTTP1.0服务器端

在前一篇文章<iOS从零开始学习socket编程--HTTP1.0客户端>中已经简单的介绍过了Socket编程和一些基本原理.并且实现了简单的iOS客户端(原文地址:http://blog.csdn.net/abc649395594/article/details/45081567) 这里再简单介绍一下如何使用OC搭建socket的服务器端.虽然这并不是一个好的解决方案,通常我们使用Java或者PHP抑或NodeJS来搭建服务器后台.但是还是有必要了解一下OC的做法,顺便加深对Socket编程

上机题目(初级)- Java网络操作-Socket实现客户端和服务器端通信二(Java)

上一节实现了客户端像服务器端发送请求,本节将实现服务器端向客户端回传信息,实现原理很简单,在原来的基础上,在服务器端实现输出流,在客户端实现输入流即可,具体代码如下: 服务器端: package com.socket.demo; import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.i

Python socket编程客户端与服务端通信

目标:实现客户端与服务端的socket通信,消息传输. 客户端 客户端代码: from socket import socket,AF_INET,SOCK_STREAM #服务端的ip地址 server_ip = '127.0.0.1' #服务端socket绑定的端口号 server_port = 20000 if __name__ == '__main__': while True: str_msg = input("请输入要发送信息:") if str_msg != "&