socket编程之服务器和客户端

服务端和客户端就像银行出纳员和客户样,一个银行出纳员(服务器),不吃不睡的服务排队的客户,每个客户都会有要解决的问题,一旦完成,客户就会走开,出纳员等待下一个客户的到来。

服务器端:

from socket import *
from time import ctime

HOST =  ‘‘ #空白,是对bind方法的标识,可以使用任何可用的地址
PORT =  21567
BUFSIZ = 1024 #缓冲区大小设为1kb
ADDR = (HOST, PORT)

tcpSerSock = socket(AF_INET, SOCK_STREAM) #分配tcp协议套接字
tcpSerSock.bind(ADDR) #将套接字绑定到服务器地址
tcpSerSock.listen(5) #开启tcp监听器的调用

while True: #无限的循环,不断的监听
    print(‘waitting for connect‘)
    tcpCliSock, addr = tcpSerSock.accept() #等待客户端的连接
    print(‘...connect from: ‘, addr)

    while True:
        data = tcpCliSock.recv(BUFSIZ)#接受客户端数据
        if not data:#如果消息为空,跳出本会话循环,等待另一个客户端连接
            break
        tcpCliSock.send(b‘[%s] %s‘ %(bytes(ctime(), ‘utf-8‘),data))#必须加b‘’否则还是str #如果得到消息则格式化返回数据并加上时间戳

    tcpCliSock.close()#并不会执行
tcpSerSock.close()#并不会执行>>>
waitting for connect
 

客户端:

from socket import *

HOST =  ‘127.0.0.1‘
PORT =  21567 #应与服务端相同
BUFSIZ = 1024 #大小也应该相同
ADDR = (HOST, PORT)

tcpCliSock = socket(AF_INET, SOCK_STREAM)#分配tcp客户端套接字
tcpCliSock.connect(ADDR)#主动调用并连接到服务器

while True:#无限循环,
    data = input(‘>‘)#输入数据
    if not data:#如果输入为空,则跳出循环
        break
    tcpCliSock.send(bytes(data, encoding = "utf8") )#发送的数据只能是bytes,用bytes(s, encoding=‘utf-8‘)将输入的str转为bytes #发送到服务器进行数据处理
    data = tcpCliSock.recv(BUFSIZ)#接受到服务器加工过的信息
    if not data:#如果调用失败则退出循环
            break
    print(data.decode(‘utf-8‘))#将bytes转为str #输出到屏幕

tcpCliSock.close()

>>>
[Thu Feb  8 16:51:49 2018] h
>hello lily
[Thu Feb  8 16:52:56 2018] hello lily
>你好
[Thu Feb  8 16:53:43 2018] 你好
>as long as you were happy
[Thu Feb  8 17:27:39 2018] as long as you were happy
 

原文地址:https://www.cnblogs.com/Zhu-Xueming/p/8432662.html

时间: 2024-10-25 20:35:26

socket编程之服务器和客户端的相关文章

python socket之tcp服务器与客户端demo

python socket之tcp服务器与客户端demo 作者:vpoet 日期:夏季 server: # -*- coding: cp936 -*- ''' 建立一个python server,监听指定端口, 如果该端口被远程连接访问,则获取远程连接,然后接收数据, 并且做出相应反馈. ''' import socket if __name__=="__main__": print "Server is starting" sock = socket.socket

socket,实现服务器和客户端对话

服务器: #define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<string>#include<WinSock2.h> //网络库用2.2版本 目前系统的最高版本#pragma comment(lib,"Ws2_32.lib") //加载动态连接库 x32.x64都是用ws2_32.lib这一个版本//上面为第二版 第一版头文件为WinSock.h 动态库为wsock32.libusing

[socket编程] 一个服务器与多个客户端之间通信

转自:http://blog.csdn.net/neicole/article/details/7539444 并加以改进 Server程序: 1 // OneServerMain.cpp 2 3 #include <iostream> 4 #include <cstdio> 5 #include <string> 6 #include <cstring> 7 #include <vector> 8 #include <iterator&g

C# Socket通信的服务器与客户端

客户端代码: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Net; using System.Net.Sockets; using System.Threading; namespace ClientSocket { class Program { private static byte[] result = new byte[1024]; s

socket编程(五)——客户端实例(TCP)

一.客户端操作流程 1.1 加载套接字库(WSAStartup()) 1.2创建套接字(socket()). 1.3向服务器发出连接请求(connect()). 对于客户端来说,它不需要绑定,可以直接连接服务器.这可以通过调用connect函数与服务器建立一个连接.其函数原型如下: int connect(SOCKET s, const struct Sockaddr FAR* name , int namelen); 参数: a) s:客户端用于首发数据的套接字. b) name:指定网路主机

Socket编程-并发服务器为例

直接上代码,内置注解 1.server端 1 /** 2 server端 3 */ 4 #include <stdio.h> 5 #include <stdlib.h> 6 #include <string.h> 7 #include <unistd.h> 8 #include <sys/types.h> 9 #include <sys/socket.h> 10 #include <netinet/in.h> 11 #in

【windows socket编程+服务器客户端】

Windows Socket编程与服务器客户端示例 Winsock是 Windows下套接字标准. Socket套接字基于计算机网络,提供同一系统上不同进程或由局域网连接在一起的不同机器上的进程间通讯功能.如下图: 套接字通过IP地址,Port端口号标识,通过这个标识可以在整个局域网定位一个套接字,通过套接字进程便可以相互传输数据.如:进程A与进程B之间欲通过套接字通信,首先进程A创建一个有IP地址,端口号唯一标识的套接字,进程B同样创建一个有IP地址,端口号唯一标识的套接字,进程A,B便可以通

Java学习之Socket编程

什么是Socket Java中的Socket编程其实就是网络编程,一般使用基于TCP/IP协议的Socket编程.所有关于Socket编程的API都在Java.net包里,一般实现客户端和服务器端之间的通讯. Socket通讯的过程 Server端Listen(监听)某个端口是否有连接请求,Client端向Server 端发出Connect(连接)请求,Server端向Client端发回Accept(接受)消息.一个连接就建立起来了.Server端和Client 端都可以通过Send,Write

socket技术详解(看清socket编程)

https://blog.csdn.net/weixin_39634961/article/details/80236161 socket编程是网络常用的编程,我们通过在网络中创建socket关键字来实现网络间的通信,通过收集大量的资料,通过这一章节,充分的了解socket编程,文章用引用了大量大神的分析,加上自己的理解,做个总结性的文章 1:socket大致介绍 socket编程是一门技术,它主要是在网络通信中经常用到 既然是一门技术,由于现在是面向对象的编程,一些计算机行业的大神通过抽象的理