9. 네트워크 프로그래밍 - tcp 서버 (1)
2939 단어 네트워크 프로그래밍
생활 속의 전화기
**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는 기본적으로 막혔습니다. 새로운 클라이언트가 와서 서버에 메시지를 보내면 막혔습니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Java 네트워크 프로그래밍 기본 자습서의 Socket 시작 사례우리가 자바에서 TCP/IP를 사용하여 네트워크를 통해 서버에 연결하려면 자바를 만들어야 합니다.net.Socket 객체를 서버에 연결합니다.Java NIO를 사용하려는 경우 Java NIO의 SocketChanne...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.