import os
import time
import sys
import socket
class server():
"""
server
"""
def __init__(self,port):
self.port = port
self.length = 1024
self.host = ''
self.max_client_num = 5
self.client_fd = None
try:
self.server_fd = socket.socket(socket.AF_INET,socket.SOCK_STREAM,0)
except:
print "server socket is wrong!"
def start(self):
print "-----start service-----"
self.server_fd.bind((self.host,self.port))
self.server_fd.listen(self.max_client_num)
while True:
try:
self.client_fd,addr = self.server_fd.accept()
except:
print "accept error!"
self.client_fd.close()
break
#print "server received the client of address: %s" %addr
print addr
while True:
try:
data = self.client_fd.recv(self.length)
except:
print "receive message error!"
self.client_fd.close()
break
if not data:
self.client_fd.close()
break
print data
self.client_fd.send(str("the server has received the data " + data))
self.server_fd.close()
if __name__ == '__main__':
service = server(12345)
service.start()
一、如果是import socket,那么创建套接字应该使用 sockfd = socket.socket来做,因为就socket来说原本是一个模块,socket.socket才是套接字接口;如果是from socket import socket或者from socket import*,那么创建套接字应该使用sockfd = socket这种方法,这个时候因为已经import了socket的函数接口,所以可以直接使用这个api了。
二、bind函数的参数是一个元组,注意(host,port)要用方括号括起来。