Home  >  Article  >  Backend Development  >  Introduction to the method of implementing socket communication in python

Introduction to the method of implementing socket communication in python

高洛峰
高洛峰Original
2017-03-04 16:25:011642browse

The example in this article describes how python implements simple socket communication. Share it with everyone for your reference, the details are as follows:

I just started to get in touch with python and implemented a helloworld program---a socket communication demo about the UDP protocol.

First of all, the implementation on the server side is as follows:

import socket, traceback
host = '' # Bind to all interfaces 
port = 51500
# Step1: 创建socket对象
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# Step2: 设置socket选项(可选)
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
# Step3: 绑定到某一个端口
s.bind((host, port))
# Step4: 监听该端口上的连接
while 1:
  try:
    message, address = s.recvfrom(8192)
    print "Got data from ", address
    s.sendto("Data is received succeefully.", address)
  except (KeyboardInterrupt, SystemExit):
    print "raise"
    raise
  except :
    print "traceback"
    traceback.print_exc()

Among them, the host is set to empty, which means that it can be bound to all interfaces and address, no matter which client's request is made, as long as it is bound to the same port, the server can monitor the request.

In a tcp connection, listening to client requests requires the use of the listen or accept function, and a dedicated socket and remote connection.

Then let our client implement:

import socket, sys
# Step1: 输入host和port信息
host = raw_input('please input host name: ')
textport = raw_input('please input textport: ')
# Step2: 创建socket对象
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
try:
  port = int(textport)
except ValueError:
  port = socket.getservbyname(textport, 'udp')
# Step3: 打开socket连接  
s.connect((host, port))
# Step4: 发送数据
print "Enter data to transmit: "
data = sys.stdin.readline().strip()
s.sendall(data)
# Step5: 接收服务器发过来的数据
print "Looking for replies; press Ctrl-C or Ctrl-Break to stop"
while 1:
  buf = s.recv(2048)
  if not len(buf):
    break
  sys.stdout.write(buf)

This example is so simple, and the implementation is almost the same as the C language version. It seems that as long as you understand socket programming, the implementation in different languages ​​will be almost the same.

For more related articles on how python implements socket communication, please pay attention to the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn