파이썬 프로젝트 - 47-소켓.md
5901 단어 python 프로젝트
from socket import *
소켓을 만듭니다 sock= socket(family,type[,protocal]), 、 、 ( 0) 。
cket 유형
묘사
cket.AF_UNIX
단일 Unix 시스템 프로세스 간 통신에만 사용 가능
cket.AF_INET
서버 간 네트워크 통신
cket.AF_INET6
IPv6
cket.SOCK_STREAM
유동식 socket, for TCP
cket.SOCK_DGRAM
데이터 보고 socket, for UDP
cket.SOCK_RAW
원본 소켓, 일반 소켓은 ICMP, IGMP 등의 네트워크 메시지를 처리할 수 없지만 SOCK_RAW 가능;다음, SOCK_RAW도 특수한 IPv4 메시지를 처리할 수 있다.또한 원본 소켓을 사용하여 IP_HDRINCL 소켓 옵션은 사용자가 IP 헤더를 구성합니다.
cket.SOCK_SEQPACKET
안정적인 무중단 데이터 패킷 서비스
TCP Socket:
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
UDP Socket:
s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
cket 함수
묘사
rver 함수
bind(address)
소켓을 주소에 바인딩합니다. AF_INET 아래, 메타그룹 (host,port) 의 형식으로 주소를 표시합니다.
listen(backlog)
TCP 전송 연결을 수신하기 시작합니다.backlog는 연결을 거부하기 전에 운영체제가 끊을 수 있는 최대 연결 수량을 지정합니다.이 값은 적어도 1이고 대부분의 응용 프로그램은 5로 설정하면 된다.
accept()
TCP 연결을 받아들이고 (conn,address) 되돌아옵니다. 그 중에서 conn은 새로운 플러그인 대상입니다. 데이터를 수신하고 발송할 수 있습니다.address는 클라이언트를 연결하는 주소입니다.
ient 함수
connect(address)
address에 연결된 플러그인.일반address의 형식은 모듈 (hostname,port) 이며, 연결이 잘못되면 socket으로 돌아갑니다.error 오류입니다.
connect_ex(adddress)
기능은connect(address)와 같지만 0을 되돌려줍니다. errno의 값을 되돌려줍니다.
socket 함수
recv(bufsize[,flag])
TCP 소켓의 데이터를 사용합니다.데이터는 문자열 형식으로 되돌아오고bufsize는 수신할 최대 데이터 양을 지정합니다.flag는 메시지에 대한 다른 정보를 제공합니다. 보통 무시할 수 있습니다.
send(string[,flag])
TCP 데이터를 전송합니다.string의 데이터를 연결된 플러그인에 보냅니다.반환 값은 보내는 바이트 수량입니다. 이 수량은string의 바이트 크기보다 작을 수 있습니다.
sendall(string[,flag])
전체 TCP 데이터 전송string의 데이터를 연결된 플러그인에 보내지만, 되돌아오기 전에 모든 데이터를 보내려고 시도합니다.None으로 되돌아오는 데 성공하고, 실패하면 이상을 던집니다.
recvfrom(bufsize[.flag])
UDP 소켓의 데이터를 적용합니다.recv () 와 유사하지만 반환 값은 (data,address) 입니다.그 중에서 데이터는 수신 데이터를 포함하는 문자열이고address는 데이터를 보내는 플러그인 주소입니다.
sendto(string[,flag],address)
UDP 데이터를 전송합니다.데이터를 플러그인에 보내면address는 (ipaddr,port) 형식의 모듈로 원격 주소를 지정합니다.반환 값은 보내는 바이트 수입니다.
close()
소켓을 닫다.
getpeername()
연결 소켓의 원격 주소를 되돌려줍니다.반환 값은 보통 그룹 (ipaddr,port) 입니다.
getsockname()
소켓 자신의 주소를 되돌려줍니다.보통 하나의 모듈 (ipaddr,port)
setsockopt(level,optname,value)
소켓 옵션에 대한 값을 설정합니다.
getsockopt(level,optname[.buflen])
소켓 옵션의 값을 되돌려줍니다.
settimeout(timeout)
플러그인 조작의 시간을 초과하는 것을 설정합니다.timeout은 부동점수이고 단위는 초입니다.None 값은 시기를 초과하지 않았음을 나타냅니다.일반적으로, 연결 작업에 사용할 수 있기 때문에, 시간 초과는 플러그인을 만들 때 설정해야 합니다. (예:connect ()
gettimeout()
현재 시간 초과 값을 되돌려줍니다. 단위는 초입니다. 시간 초과를 설정하지 않으면 None으로 돌아갑니다.
fileno()
소켓의 파일 설명자를 되돌려줍니다.
setblocking(flag)
flag가 0이면 플러그인을 비차단 모드로 설정하고, 그렇지 않으면 플러그인을 차단 모드 (기본값) 로 설정합니다.비차단 모드에서recv () 를 호출하면 데이터가 발견되지 않거나send () 호출로 데이터를 즉시 보낼 수 없으면socket을 일으킬 수 있습니다.error 예외입니다.
makefile()
이 소켓과 연결된 파일 만들기
from socket import *
TCP 서버: sock=socket(AF_INET,SOCK_STREAM)
ip_port=("127.0.0.1",8080)
sock.bind(ip_port)
sock.listen(5)
sock.accept()
#1024
sock.recv(1024)
# , ip:port, :
sock.recvfrom(1024)
#sendto , , (ip,port), ("127.0.0.1",8080)
sock.sendto(" ".encode(),("127.0.0.1",8080))
TCP 클라이언트:
sock=socket(AF_INET,SOCK_STREAM)
sock.connect(('127.0.0.1',8097))
sock.recvfrom(1024)
sock.sendto(" ".encode(),("127.0.0.1",8080))
sock.close()
from socket import *
udpSocket=socket(AF_INET,SOCK_DGRAM)
udpSocket.connect(('127.0.0.1',8097))
while True:
input_text=input(" ----")
udpSocket.send(input_text.encode())
socket-server.py from socket import *
udpSocket=socket(AF_INET,SOCK_DGRAM)
ip_port=("127.0.0.1",8097)
udpSocket.bind(ip_port)
while True:
recvInfo= udpSocket.recvfrom(1024)
print("{}:{}".format(str(recvInfo[1]),recvInfo[0].decode()))
udpSocket.sendto(recvInfo[0],recvInfo[1])
from threading import Thread
from socket import *
udpSocket=None
desIp=""
desPort=0
port=0
# ,
def recvData():
while True:
recvInfo = udpSocket.recvfrom(1024)
# ip:port,
print("{}<<: recvinfo="" def="" senddata="" while="" true:="" sendinfo="input("">>")
udpSocket.sendto(sendInfo.encode(),(desIp,desPort))
def main():
global udpSocket
global desIp
global desPort
udpSocket = socket(AF_INET, SOCK_DGRAM)
port=int(input(" "))
desIp=input(" ip")
desPort=int(input(" "))
ip_port = ("127.0.0.1", port)
udpSocket.bind(ip_port)
tr=Thread(target=recvData)
ts=Thread(target=sendData)
tr.start()
ts.start()
#
tr.join()
ts.join()
if __name__ == '__main__':
main()
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
파이썬 프로젝트 - 47-소켓.md유동식 socket, for TCP 데이터 보고 socket, for UDP 원본 소켓, 일반 소켓은 ICMP, IGMP 등의 네트워크 메시지를 처리할 수 없지만 SOCK_RAW 가능;다음, SOCK_RAW도 특수한...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.