3.网络编程-tcp的服务器简单实现

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2019/1/13 22:03
# @Author  : ChenAdong
# @email   : [email protected]

# 实现tcp服务器轮流向多个客户端服务(同时只有一个客户端接受服务)

import socket

def tcp_server():
   # 创建套接字
   socket_serve = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

   # 绑定端口,一般ip地址不绑定,直接给空值;并且地址是元组形式
   socket_serve.bind((" ", 8081))

   # 监听端口
   socket_serve.listen(3)

   while True:
      new_socket, client_addr = socket_serve.accept()
      # 阻塞,直到有客户端连接,多个用户连接时候,组成一个列表,下面再逐个拿出每个用户地址,创建新的套接字,进行通信
      while True:
         recv_data = new_socket.recv(1024)
         # 如果客户端关闭,会自动发送空值给服务器,可以用这个判断客户端关闭;这里当客户端关闭时候,服务器也关闭套接字
         # 无法直接发送一个空值
         if recv_data:
            new_socket.send("hello".encode("utf-8"))
         else:
            break
      new_socket.close()

if __name__ == "__main__":
   tcp_server()

  

原文地址:https://www.cnblogs.com/chenadong/p/10264905.html

时间: 2024-10-09 18:05:15

3.网络编程-tcp的服务器简单实现的相关文章

Linux网络编程——tcp并发服务器(poll实现)

想详细彻底地了解poll或看懂下面的代码请参考<Linux网络编程--I/O复用之poll函数> 代码: #include <string.h> #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <sys/select.h> #include <sys/time.h> #include <sys/socket.h> #incl

Linux网络编程——tcp并发服务器(多进程)

一.tcp并发服务器概述 一个好的服务器,一般都是并发服务器(同一时刻可以响应多个客户端的请求).并发服务器设计技术一般有:多进程服务器.多线程服务器.I/O复用服务器等. 二.多进程并发服务器 在 Linux 环境下多进程的应用很多,其中最主要的就是网络/客户服务器.多进程服务器是当客户有请求时,服务器用一个子进程来处理客户请求.父进程继续等待其它客户的请求.这种方法的优点是当客户有请求时,服务器能及时处理客户,特别是在客户服务器交互系统中.对于一个 TCP 服务器,客户与服务器的连接可能并不

Linux网络编程——tcp并发服务器(多线程)

tcp多线程并发服务器 多线程服务器是对多进程服务器的改进,由于多进程服务器在创建进程时要消耗较大的系统资源,所以用线程来取代进程,这样服务处理程序可以较快的创建.据统计,创建线程与创建进程要快 10100 倍,所以又把线程称为"轻量级"进程.线程与进程不同的是:一个进程内的所有线程共享相同的全局内存.全局变量等信息,这种机制又带来了同步问题. tcp多线程并发服务器框架: 我们在使用多线程并发服务器时,直接使用以上框架,我们仅仅修改client_fun()里面的内容. 代码示例: #

Linux网络编程:客户端/服务器的简单实现

一. Socket的基本知识 1. socket功能 Socket层次 Socket实质上提供了进程通信的端点,进程通信之前,双方必须首先各自创建一个端点,否则是没有办法建立联系并相互通信的. 每一个Socket都一个半相关描述: {协议, 本地地址, 本地端口} 完整的Socket的描述: {协议, 本地地址, 本地端口, 远程地址, 远程端口} 2. Socket工作流程 面向连接(TCP)的Socket工作流程 UDP的socket工作流程 l 服务器端 首先,服务器应用程序用系统调用so

Socket网络编程(TCP/IP/端口/类)和实例

Socket网络编程(TCP/IP/端口/类)和实例 原文:C# Socket网络编程精华篇 转自:微冷的雨 我们在讲解Socket编程前,先看几个和Socket编程紧密相关的概念: TCP/IP层次模型 当然这里我们只讨论重要的四层 01,应用层(Application):应用层是个很广泛的概念,有一些基本相同的系统级TCP/IP应用以及应用协议,也有许多的企业应用和互联网应用.http协议在应用层运行. 02,传输层(Tanspot):传输层包括UDP和TCP,UDP几乎不对报文进行检查,而

python网络编程——TCP

<pre name="code" class="python"> 一.网络通信模式 对于网络通信,现在遵循的是TCP/IP协议组. 而现在设计的通信模式中,主要使用的是客户端/服务器编程,所谓的客户端就是我们用户所用的软件,而服务端则是程序开发人员根据客户端的需要设计的服务模式,为了是满足客户端的要求,实现和客户端进行正常通信. 二.套接字:通信的端点 对于tcp/Ip协议来说,它是一个多层协议族,分别是物理层,数据链路层,网络层,传输层,应用层.对于网

网络编程TCP总结及实践-C语言

网络变成首先要注意IP和端口的转换,现在电脑基本上是主机字节序,存储按照小端方式,而在网络中传输统一使用大端方式,所以网络变成首先要注意字节序的转换. 一个常用的ip转换程序的实现: #include <stdio.h> #include <string.h> #include <stdlib.h> #include <unistd.h> #define CHIP(ip) (ip&0xff)<<24 |(ip&(0xff<&

Linux网络编程-----TCP程序设计

基于TCP-服务器 1.创建一个socket, 2.绑定IP地址.端口等信息到socket上,用函数bind() 3.设置允许的最大连接数,用函数listen(). 4.等待来自客户端的连接请求,用accept() 5.收发数据,用函数send()和recv(),或者read()和write() 6.关闭网络连接 基于TCP-客户端 1.socket创建套接字 2.设置要连接服务器的IP地址和端口等属性 3.连接服务器,用函数connect() 4.收发数据,用函数send()和recv(),或

网络编程 --- URLConnection --- 读取服务器的数据 --- java

使用URLConnection类获取服务器的数据 抽象类URLConnection表示一个指向指定URL资源的活动连接,它是java协议处理器机制的一部分. URL对象的openConnection()方法就是调用了URLStreamHandler的openConnection()方法. 如有疑问请参考:JAVA网络编程[第三版], 如下图: 怎样获取服务器输出的数据呢?代码如下: import java.io.IOException; import java.io.InputStream; i