私は、ネットワーク プログラミングがどのようにうまく行われるかを理解するために、Python ソケットをいじっています。現在、サーバーに接続し、閉じる前に任意の数のメッセージを送信できるクライアントをセットアップしようとしています。私はまだすべてを完全に理解しているわけではなく、1 つのメッセージしか送信できません。ソケットプログラミングの経験がある人にとっては、おそらく明らかなことです。複数のメッセージを送信する方法を誰かに説明してもらえますか? connect、bind、close、recv、およびすべての主要なソケット機能がどのように機能するかを説明する適切な情報源を提供してください。(私が見つけたほとんどのソースは、それらをいつ使用するかを教えてくれます。)
クライアント
# !usr/bin/python
import socket
import sys
def main():
host = ""
port = 8934
message = "Hello World!"
host = raw_input("Enter IP: ")
#Create Socket
try:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
except socket.error, msg:
print "Failed to create socket. Error code: %s Error Message: %s"%(str(msg[0]),msg[1])
sys.exit()
print "Socket created"
#Connect to server
s.connect((host,port))
while message != "/e":
#Send Data
message = raw_input("Send >> ")
try:
s.sendall(message)
except socket.error, msg:
print "ERROR %s"%(msg[1])
print "Failed to send."
s.close()
if __name__ == "__main__":
main()
サーバ
# !usr/bin/python
import socket
import sys
HOST = ""
PORT = 8934
s = socket.socket()
class BoServer:
def __init__(self):
try:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
except socket.error,msg:
print "Unable to create socket"
sys.exit()
print "Socket created."
def bind(self):
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
try:
s.bind((HOST,PORT))
except socket.error,msg:
print "Bind failed. Closing..."
sys.exit()
print "Socket bound."
def run(self):
while True:
s.listen(10)
print "Socket Listening"
conn, addr = s.accept()
print "Connected to %s:%s"%(addr[0],addr[1])
income = conn.recv(4096)
if income != "":
print income
def main():
serv = BoServer()
serv.bind()
serv.run()
if __name__ == "__main__":
main()