python socket 网络编程

 

 

socket 套接字:网络接口。

我们在网络上需要传输自己需要的数据,我们在网络上传输数据使用的是网络协议,

而套接字就是我们将数据从本地采用协议传输的接口

 

 

socket模型:

 

 

socket族:
#AF_UNIX 被使用在类unix系统之间进行通信的socket族
#AF_INET 被使用在网络间的通信的socket族
#AF_INET6 被使用在ipv6协议上的socket族
socket类型:
#SOCK_STREAM 针对于tcp/ip协议的socket类型
#SOCK_DGRAM 针对udp协议的socket类型

 

一、第一个socket例子:

#socket_server

import socket

sock=socket.socket(socket.AF_INET,socket.SOCK_STREAM)   #创建socket对象
sock.bind(("127.0.0.1",8001))                        #绑定套接字
sock.listen(5)                                            #监听 ,连接等待的队列大小

 
conn,add=sock.accept()                  #  conn : <socket._socketobject object at 0x7f1c6010da60>  客户端的socket对象 # add: ('127.0.0.1', 34548)
print(conn.recv(512))                  #接收信息
conn.send("hello I am server".encode("utf-8"))     #发送信息
sock.close()            #关闭连接

#socket_client

import socket

sock=socket.socket(socket.AF_INET,socket.SOCK_STREAM)          #创建socket对象
sock.connect(("127.0.0.1",8001))                                #连接指定服务
sock.send("I am client".encode("utf-8"))        #发送信息

print(sock.recv(512))                 #打印接收到信息
sock.close()        #关闭连接

 

 eg1:

 #server

import socket
sock=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
sock.bind(("127.0.0.1",8006))
sock.listen(5)
while True:
  conn,add=sock.accept()
  while True:
    recvs = conn.recv(512)
    print(recvs)

    if recvs == "break":
      break
    sends = raw_input(">>>>")
    conn.send(sends)
    if sends == "break":
      break
sock.close()

 

 #client

import socket

sock=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
sock.connect(("127.0.0.1",8006))
while True:
  sends = raw_input(">>>>")
  sock.send(sends)
  recvs = sock.recv(512)
  print(recvs)
  if recvs == "break":
    break
sock.close()

 

原文地址:https://www.cnblogs.com/fanxuanhui-linux/p/5958218.html