python3(socket 实现udp,tcp套接字编程)

#coding=utf-8
#客户端程序TCP 连接

import socket

s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)

s.connect((‘127.0.0.1‘,9999))

print(s.recv(1024))

for data in [‘Michael‘,‘Tracy‘,‘Sarah‘]:
    s.send(data.encode())
    print(s.recv(1024))

s.send(b‘exit‘)

#coding=utf-8
#TCP服务器端程序
import socket
import time
import threading

def tcplink(sock,addr):
    print("accept new connection from %s:%s..." % addr)
    sock.send("Welcom!".encode())
    while True:
        data=sock.recv(1024)
        time.sleep(1)
        if data==‘exit‘ or not data:
            break
        sock.send("hello: ".encode()+data)
    sock.close()
    print("Connection from %s:%s closed." % addr)

s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)  # 创建一个基于ipv4 的TCP协议的socket

s.bind((‘127.0.0.1‘,9999))  #监听端口

s.listen(5)
print("Waiting for connection......")

while True:
    sock,addr=s.accept()
    t=threading.Thread(target=tcplink,args=(sock, addr))
    t.start()
    

运行结果:

Waiting for connection......
accept new connection from 127.0.0.1:60218...
Connection from 127.0.0.1:60218 closed.
b‘Welcom!‘
b‘hello: Michael‘
b‘hello: Tracy‘
b‘hello: Sarah‘

UDP客户端和服务器端代码:


#coding=utf-8
#UDP 客户端代码

import socket

s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)

for data in ["chenshan","yuanhui","chendianqiang"]:
    s.sendto(data.encode(),(‘127.0.0.1‘,9999))
    print(s.recv(1024))

s.close()

#coding=utf-8
#UDP 协议服务器代码
import socket

s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)

s.bind((‘127.0.0.1‘,9999))
print("Bind UDP on prot:9999")

while True:
    data,addr=s.recvfrom(1024)
    print("Receive from %s:%s"% addr)
    s.sendto("Hello ".encode()+data,addr)

时间: 2024-10-11 21:33:12

python3(socket 实现udp,tcp套接字编程)的相关文章

Unix网络编程之基本TCP套接字编程(上)

TCP客户/服务器实例 服务器程序 #include "unp.h" int main(int argc, char **argv) { int listenfd, connfd; pid_t childpid; socklen_t clilen; struct sockaddr_in cliaddr, servaddr; listenfd = Socket(AF_INET, SOCK_STREAM, 0); //1 bzero(&servaddr, sizeof(servad

【UNIX网络编程(二)】基本TCP套接字编程函数

基于TCP客户/服务器程序的套接字函数图如下: 执行网络I/O,一个进程必须做的第一件事就是调用socket函数,指定期望的通信协议类型. #include <sys/socket.h> int socket(int family, int type, int protocol);/*返回值:若成功则为非负描述符,若出错则为-1*/ socket函数成功时返回一个小的非负整数值,它与文件描述符类似,把它称为套接字描述符,简称sockfd.family参数指明协议族,被称为协议域.type参数指

【UNIX网络编程(四)】TCP套接字编程详细分析

引言: 套接字编程其实跟进程间通信有一定的相似性,可能也正因为此,stevens这位大神才会将套接字编程与进程间的通信都归为"网络编程",并分别写成了两本书<UNP1><UNP2>.TCP套接字编程是套接字编程中非常重要的一种,仔细分析,其实它的原理并不复杂.现在就以一个例子来详细分析TCP套接字编程. 一.示例要求: 本节中试着编写一个完成的TCP客户/服务器程序示例,并对它进行深入的探讨.该示例会用到绝大多数的基本函数,未用到但比较重要的函数会在后面的补充上

《网络编程》基本 TCP 套接字编程

在进行套接字编程之前必须熟悉其地址结构,有关套接字的地址结构可参考文章<套接字编程简介>.基于 TCP 的套接字编程的所有客户端和服务器端都是从调用socket 开始,它返回一个套接字描述符.客户端随后调用connect 函数,服务器端则调用 bind.listen 和accept 函数.套接字通常使用标准的close 函数关闭,但是也可以使用 shutdown 函数关闭套接字.下面针对套接字编程实现过程中所调用的函数进程分析.以下是基于 TCP 套接字编程的流程图: socket 函数 套接

UNIX网络编程笔记(3)—基本TCP套接字编程

基本TCP套接字编程 主要介绍一个完整的TCP客户/服务器程序需要的基本套接字函数. 1.概述 在整个TCP客户/服务程序中,用到的函数就那么几个,其整体框图如下: 2.socket函数 为了执行网络I/O,一个进程必须要做的事情就是调用socket函数.其函数声明如下: #include <sys/socket.h> int socket(int family ,int type, int protocol); 其中: family:指定协议族 type:指定套接字类型 protocol:指

《网络编程》基于 TCP 套接字编程的分析

本节围绕着基于 TCP 套接字编程实现的客户端和服务器进行分析,首先给出一个简单的客户端和服务器模式的基于 TCP 套接字的编程实现,然后针对实现过程中所出现的问题逐步解决.有关基于 TCP 套接字的编程过程可参考文章<基本 TCP 套接字编程>.该编程实现的功能如下: (1)客户端从标准输入读取文本,并发送给服务器: (2)服务器从网络输入读取该文本,并回射给客户端: (3)客户端从网络读取由服务器回射的文本,并通过标准输出回显到终端: 简单实现流图如下:注:画图过程通信双方是单独的箭头,只

基本的TCP套接字编程

上图基本展示了TCP客户端与服务器编程的基本的流程. 1.面向连接编程(TCP) 面向连接的网络应用程序开发流程比较固定,需要开发者创建服务器与客户端两个应用程序,通过网络是想进程间的通讯. ●     服务器端流程 1        创建套接字(socket) 2        服务绑定(bind) 3        服务侦听(listen) 4        处理新到连接(accept) 5       数据收发(recv\send) 6       套接字关闭(close) ●     客

套接字编程相关函数(2:TCP套接字编程相关函数)

1. 基本TCP客户/服务器程序的套接字函数 2. socket函数 为了执行网络I/O,一个进程必须做的第一件事就是调用socket函数,指定期望的通信协议类型.其定义如下: #include <sys/socket.h> int socket(int family, int type, int protocol); // 返回:若成功则返回非负描述符,若失败则返回-1 其中:family参数指明协议族,它是图4-2中所示的某个常值.该参数也往往被称为协议域. type指明套接字类型,它是图

TCP套接字编程 学习笔记 1

0. 套接字函数 1.socket函数 为了执行网络I/O,一个进程必须做的第一件事情就是调用socket函数,指定期望的通信协议类型(IPv4的TCP,IPv6的UDP,Unix域字节流协议等) #include<sys/socket.h> int socket ( int family , int type , int protocol); 返回 : 非负的描述符 ------ 成功,-1 ----- 失败- family : 指明协议族,    (AF_INET,IPv4协议)  ,  

第4章 基本tcp套接字编程

4.1 各种套接字api(重要) 4.1.1 socket() 用于创建一个套接字描述符,这个描述符指明的是tcp还是udp,同时还有ipv4还是ipv6 #include <sys/socket.h>?int socket(int family, int type, int protocol);//成功返回描述符,错误-1 family主要是指明的协议族,AF_INET:ipv4.AF_INET6:ipv6 .AF_LOCAL:unix域协议.AF_ROUTE:路由套接字.AF_KEY秘钥套