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

服务器端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()

测试数据:

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

  1. Socket编程——客户端,服务器端的读写操作

    URL网络编程,最大的特征就是一对一的响应! 1:客户端“写”,服务器端用于“读” package coreBookSocket2; import java.io.InputStreamReader; ...

  2. Python之路,Day8 - Socket编程进阶

    Python之路,Day8 - Socket编程进阶   本节内容: Socket语法及相关 SocketServer实现多并发 Socket语法及相关 socket概念 socket本质上就是在2台 ...

  3. 【爬坑】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/IdeaPro ...

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

    本章内容: Socket IO多路复用(select) SocketServer 模块(ThreadingTCPServer源码剖析) Socket socket通常也称作"套接字" ...

  5. Python网络编程之socket编程

    什么是Socket? Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口.在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面 ...

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

    [本文出自天外归云的博客园] 目标:实现客户端与服务端的socket通信,消息传输. 客户端 客户端代码: from socket import socket,AF_INET,SOCK_STREAM ...

  7. python 基础(十五) socket编程

    SOCKET TCP协议: 有请求 有响应 称之为 tcp协议 是面向连接的协议 就是在收发数据之前 必须先要建立一个可靠的链接 三次握手 如:网站 UDP协议: 是一个非链接的协议 传输之前不需要键 ...

  8. Day8 - Python网络编程 Socket编程

    Python之路,Day8 - Socket编程进阶   本节内容: Socket语法及相关 SocketServer实现多并发 Socket语法及相关 socket概念 socket本质上就是在2台 ...

  9. 基于win32的socket编程及程序实现

    初步研究了win32平台的Windows Sockets,它是Microsoft Windows的网络程序设计接口,它是从Berkeley Sockets扩展而来的,以动态链接库的形式提供给我们使用. ...

  10. 读懂Java中的Socket编程

    Socket,又称为套接字,Socket是计算机网络通信的基本的技术之一.如今大多数基于网络的软件,如浏览器,即时通讯工具甚至是P2P下载都是基于Socket实现的.本文会介绍一下基于TCP/IP的S ...

随机推荐

  1. vue-cli 脚手架 安装

    一. node安装 1)如果不确定自己是否安装了node,可以在命令行工具内执行: node -v  (检查一下 版本): 2)如果 执行结果显示: xx 不是内部命令,说明你还没有安装node , ...

  2. 2.Smarty的引入和实例化

    1.把demo和lib复制出来,并且创建一个test文件夹作为工作的目录 如图所示: 2.这是libs里面的内容,其中smarty.class.php包含了smarty各种方法和功能,需要实例化它还工 ...

  3. phpcmsV9常用标签

    头部: <title>{if isset($SEO['title']) && !empty($SEO['title'])}{$SEO['title']}{/if}{$SEO ...

  4. 【PHP】震惊,一张图详解递归函数!!!!

    在PHP学习中,递归函数是一个非常重要也是非常难以理解的部分,本博文将通过一张图尽可能演示这个过程,不对之处还请指出

  5. 新技术探究之 GraphQL

    What? GraphQL 是一种类似于 SQL 的结构化查询语言,由 facebook 于2012年创造,于2015年开源.SQL 在服务端定义,GraphQL 在客户端定义,也就是说 GraphQ ...

  6. 基于vue2.0的网易云音乐 (实时更新)

    本人在自学vue,之后想在学习过程中加以实践.由于之前有做过jquery的播放器效果,ui仿照网易云,地址 www.daiwei.org/music 于是就想做vue 的网易云播放器,网上也有类似的项 ...

  7. 基于angular4.0分页组件

    分页组件一般只某个页面的一小部分,所以我们它是子组件 当然如果你承认这话的,可以往下看,因为我把他当作子组建来写了 分页组件的模版 import { Component } from '@angula ...

  8. jquery.validata.js 插件2

    结合上面的,今天写一下validate的使用方法. validate()验证所选的form. validate 方法返回一个 Validator 对象.Validator 对象有很多方法可以用来引发校 ...

  9. c# 中事务处理

    1.在c#中,使用以下语句,就可以不用再数据库中进行事务语句处理了. TransactionOptions transactionOption = new TransactionOptions() ; ...

  10. Command "python setup.py egg_info" failed with error code 10

    1:今天系统重装以后,下载了新的版本的python3.6.1.然后想通过pycurl模块测试URL,突然发现windows10下我无法通过pip安装pycurl模块了,报错内容如下 Collectin ...