python10-socket
socket 네트워크 프로그래밍
스스로 socket 클라이언트와 서버를 실현하다
socket 서버
import socket
sk = socket.socket() # , socket
ip_port = ('127.0.0.1', 9999)
sk.bind(ip_port) # socket ip
sk.listen(5) # socket
while True:
sock, addr = sk.accept() #
sock.sendall(bytes(' ', encoding='utf-8'))
print(type(sock))
while True:
try:
byte_data = sock.recv(1024) # ,
data = str(byte_data, encoding='utf-8')
ret = ' :%s' % data
sock.sendall(bytes(ret, encoding='utf-8'))
if data == 'q':
break
except Exception as e:
break
else:
pass
finally:
pass
socket 클라이언트
import socket
client = socket.socket() # socket
client.connect(('127.0.0.1', 9999,)) # socket
byte_data = client.recv(1024)
print(str(byte_data, encoding='utf-8'))
while True:
inp = input()
client.sendall(bytes(inp, encoding='utf-8'))
byte_data = client.recv(1024)
data = str(byte_data, encoding='utf-8')
if data == ' :q':
print(' ')
break
else:
print(data)
client.close()
socket 더 많은 방법
sk = socket.socket(family=socket.AF_INET,type=socket.SOCK_DGRAM,proto=0)
# family:socket.AF_INET = IPv4( ) IPv6
# type:TCP
# proto: 0
sk.bind((ip,port,)
# IP port
sk.listen(count)
# , , count == 2
# , 2 , 2 , , count == 2
sk.setblocking(bool)
#
# True: ( )
# False: , socket recv accept ,
sk.connect((ip,port,)
#
sk.connect_ex((ip,port,)
# , , 0, ,
sk.close()
#
sk.recv(1024)
# ,
sk.recvfrom(buffersize)
# UPD
sk.send()
# ,2.7 ,3.x
# send ,
sk.sendall()
# send ,
sk.sendto()
# UDP
sk.settimeout()
#
sk.getsocketname()
# socket
sk.getpeername()
# socket
sk.fileno()
# socket ( )
socket 파일 업로드
server
import socket
server = socket.socket()
server.bind(('127.0.0.1', 9999))
server.listen(5)
print(' :
>>>>>')
while True:
conn,address = server.accept()
print(' :ip:%s port:%s'%(address[0], address[1]))
retStr = ' , '
conn.sendall(bytes(retStr, encoding='utf-8'))
fileInfo = conn.recv(1024)
fileInfo = str(fileInfo, encoding='utf-8')
fileName, fileLength = fileInfo.split('&')
print(' :%s :%s'%(fileName,fileLength))
conn.sendall(bytes(' ',encoding='utf-8'))
totalLength = int(fileLength)
hasLoadSize = 0
file = open(fileName, mode='wb')
while True:
if hasLoadSize >= totalLength:
break
data = conn.recv(1024)
file.write(data)
client
import socket
import os
client = socket.socket()
client.connect(('127.0.0.1', 9999))
connectInfo = client.recv(1024)
connectInfo = str(connectInfo, encoding='utf-8')
print(connectInfo)
fileName = input('
>>> ')
fileLength = os.stat('dest_top_img.jpg').st_size
ret_msg = '%s&%s'%(fileName,fileLength)
client.sendall(bytes(ret_msg, encoding='utf-8'))
rec_msg = client.recv(1024)
print(str(rec_msg, encoding='utf-8'))
print(str(rec_msg, encoding='utf-8'))
with open('dest_top_img.jpg', mode='rb') as file:
for line in file:
client.sendall(line)
client.close()
socketserver 모듈 다중 병발 실현
```
import socketserver
class MyServer(socketserver.BaseRequestHandler):
def handle(self):
print(self.request) #
print(self.client_address) #
print(self.server) # :server
if __name__ == '__main__':
server = socketserver.ThreadingTCPServer(('127.0.0.1',9999),MyServer)
server.serve_forever()
#
# ('127.0.0.1', 4971)
#
```
```
import socket
client = socket.socket()
client.connect(('127.0.0.1',9999))
```
빗질
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.