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

服务器端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. MySQL各模块工作配合

    MySQL各模块工作配合 在了解了 MySQL 的各个模块之后,我们再看看 MySQL 各个模块间是如何相互协同工作的 .接下来,我们通过启动 MySQL,客户端连接,请求 query,得到返回结果, ...

  2. 【Android Developers Training】 37. 共享一个文件

    注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...

  3. C++基础之引用与指针的区别与联系、常引用使用时应注意的问题

    什么是引用? 引用就是对变量起一个别名,而变量还是原来的变量,并没有重新定义一个变量.例如下面的例子:   #include<iostream> using namespace std; ...

  4. Maven pom.xml配置详解

    POM的全称是“ProjectObjectModel(项目对象模型)”. 声明规范 <projectxmlns="http://maven.apache.org/POM/4.0.0&q ...

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

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

  6. 深度学习:Keras入门(一)之基础篇

    1.关于Keras 1)简介 Keras是由纯python编写的基于theano/tensorflow的深度学习框架. Keras是一个高层神经网络API,支持快速实验,能够把你的idea迅速转换为结 ...

  7. UNITY VR 视频/图片 开发心得(一)

    现在的VR似乎没有之前那么火热了,于是乎我居然开始了VR征程... 说起VR,对于没有接受过相关知识的人来说可能看起来比较高大上,但是VR的原理却没有想象中那么复杂.总的来说,VR之所以能够产生立体感 ...

  8. angular.extend、angular.$watch、angular.bootstrap

    1.angular.extend:依次将第二个参数及后续的参数的第一层属性(不管是简单属性还是对象)拷贝给第一个参数的第一层属性,即如果是对象,则是引用的是同一个对象,并返回第一个参数对象. 直接上代 ...

  9. Unity3D-Shader-实现X光效果

    [旧博客转移 - 2016年1月3日 16:40 ] 最近学习了一些Shader效果,打算把学到的知识总结一下,这篇讲一下这种轮廓发光的效果(如下图所示),也有一些地方管这个叫X光     1.原理 ...

  10. 通过ALM OTA API获取test case的信息,并上传测试结果到test set中

    ALM提供了OTA接口,可以用来获取和上传测试数据到ALM.比如获取Test case的step信息.上传测试结果到test instance. 在ALM的Help中可以下载相关文档,这里以ALM11 ...