9. 네트워크 프로그래밍 - tcp 서버 (1)

1. 플러그인 만들기 2,bind 귀속 ip와port는 서비스 측으로서 ipport는 고정적이어야 하기 때문에 귀속해야 한다.클라이언트는 일반적으로 3,listen을 연결하지 않고 플러그인을 감청 플러그인으로 바꿉니다. 즉, 수동 링크로 바꿉니다. 4,accept는 고객의 링크를 기다립니다.
생활 속의 전화기
**1. **vim 05-tcp 서버.py
사고방식: 주석으로 절차 구축
def main():
	#1、 ( )
	#2、 (  bind ip port)
	#3、 (  listen)
	#4、 (  accept)

if __name__ == "__main__":
main()

사고방식: 코드 명령 보완: esc는 명령 모드에 들어가고 대문자 I는 커서가 있는 줄로 돌아간다. - (I를 누르면 편집 모드로 들어간다) 큰 A는 커서가 있는 줄의 끝으로 돌아간다.
주의:listen은 하나의 매개 변수가 있는데 하나의 수치입니다. 일반적으로 128을 씁니다. 매개 변수가 클수록 나중에 연결할 수 있는 클라이언트가 많고, 매개 변수가 작을수록 링크된 클라이언트가 적습니다. 운영체제에 따라 매개 변수가 다르기 때문에 linux에서 128과 256은 10의 차이가 크지 않습니다. 128을 쓰면 됩니다.accept에 반환 값이 있습니다. 반환 값은 하나의 모듈입니다. 만약에 등호의 오른쪽에 반환 값이 하나의 모듈일 때 등호 왼쪽에 두 개의 변수가 있습니다. 이를 해체라고 하고ipython3로 어떤 지식점을 테스트할 수 있습니다.accept가 되돌아오는 첫 번째 변수는 새로운 플러그인을 수신하는 데 사용되고, 두 번째 변수는 클라이언트의 정보를 수신하는 데 사용됩니다.예를 들어 10086에게 전화를 할 때 서버에 감청 플러그인이 하나 있다. 고객이 온 후에 연결한다. 서버는 이 고객을 위한 플러그인을 다시 찾는다. 즉, 인공 고객서비스이다. 한 고객이 더 올 때 먼저 감청 플러그인을 연결한 다음에 서버는 다른 플러그인을 찾아 새로운 고객 서비스를 한다. 10086을 연결할 때 상대방은 당신의 전화번호를 안다.프로세스의 첫 번째 세 단계는 모두 고정되어 있으며, 마지막으로accept는 기본적으로 차단되며, 새로운 고객이 연결될 때 차단을 풀 수 있습니다.서버로서 일반적으로 먼저 데이터를 받고 다시 데이터를 보내기 때문에 다섯 번째 단계가 생겼다. 데이터를 받고 두 개의 플러그인이 있다. tcp_server_socket 및 new_client_socket, 수신 데이터는 new_를 통해client_cket, 수신 데이터는recv,udp에서recvfrom이고 두 뒤에 매개 변수가 있습니다. 보통 1024를 씁니다. 클라이언트의 IP와port를 알고 있기 때문에new_client_socket.recv(1024)는 원조가 아닌 데이터만 되돌려줍니다.데이터를 받은 후 클라이언트에게 메시지를 보내야 합니다. 즉send입니다.소켓을 닫아라, 두 개의 소켓이 있는데, 모두 닫아야 한다
import socket

def main():
	#1、 ( )
	tcp_server_socket = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
	
	#2、 (  bind ip port)
	tcp_server_socket.bind(("",7890))
	
	#3、 (  listen)
	tcp_server_socket.listen(128)
	
	#4、 (  accept)
	new_client_socket,client_addr = tcp_server_socket.accept()
	print(client_addr)
	
	#5、 
	recv_data = new_client_socket.recv(1024)
	print(recv_data)
	
	#6、 
	new_client_socket.send("hahahh".encode("utf-8"))

	#7、 
	new_client_socket.close()
	tcp_server_socket.close()
	
if __name__ == "__main__":
main()

보기 편리하도록 몇 줄의 점선을 인쇄하여 프로그램을 테스트할 수 있다
import socket

def main():
	#1、 ( )
	tcp_server_socket = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
	
	#2、 (  bind ip port)
	tcp_server_socket.bind(("",7890))
	
	#3、 (  listen)
	tcp_server_socket.listen(128)
	
	print("-------1-------")
	#4、 (  accept)
	new_client_socket,client_addr = tcp_server_socket.accept()
	print("-------2-------")
	print(client_addr)
	
	#5、 
	recv_data = new_client_socket.recv(1024)
	print(recv_data)
	
	#6、 
	new_client_socket.send("hahahh".encode("utf-8"))

	#7、 
	new_client_socket.close()
	tcp_server_socket.close()
	
if __name__ == "__main__":
main()

프로그램을 실행하여 테스트를 진행하였는데 ---1---가 인쇄된 것을 발견하였는데, 앞의 세 단계는 모두 문제가 없었다는 것을 설명합니다.accept는 기본적으로 막혔습니다. 새로운 클라이언트가 와서 서버에 메시지를 보내면 막혔습니다.

좋은 웹페이지 즐겨찾기