Pemrograman Jaringan Python - Multithreading Server TCP
Tag Terkait:1. Berdayakan Web Anda dengan Python
2. Shodan dan Python API
Server TCP membuat soket dengan beberapa klien secara bersamaan, memerlukan satu thread untuk mempertahankan satu klien.
1. Impor paket socket
import socket
2. Buat soket server
socket.socket(AddressFamily, Type)
socket.AF_INET mewakili tipe IPv4
SOCK_STREAM berarti tcp
Perlu mengatur multiplexing port untuk melayani beberapa klien
tcp_server_socket = socket.socket ( socket.AF_INET , socket.SOCK_STREAM ) _ _ _ _ _ _
#Multiplexing port pelepasan port keluar server segera
tcp_server_socket.setsockopt ( socket.SOL_SOCKET , socket.SO_REUSEADDR , True ) _ _ _ _ _ _
3. Ikat nomor port
tcp_server_socket.bind
Parameter pertama mewakili alamat IP, umumnya Anda tidak perlu menentukan IP apa pun yang mewakili mesin
Parameter kedua adalah nomor port
tcp_server_socket.bind (( ' ' , 9090 ) )
4. Atur pemantauan
Menunjukkan jumlah maksimum koneksi yang menunggu untuk dibuat 128
tcp_server_socket.listen ( 128 ) _ _
5. Tunggu permintaan koneksi klien
Soket baru dikembalikan setiap kali klien dan server berhasil membuat koneksi
while True :
new_client , ip_port = tcp_server_socket.accept ( ) _
sub_thresd = threading . Thread ( target = handle , args = ( ip_port , new_client ))
sub_thresd.start ( ) _
6. Terima data
Kirim dan terima pesan menggunakan soket yang baru dikembalikan
rece_data = new_client.recv ( 1024 ) _ _
if rece_data :
rece_data = rece_data.decode ( ' utf -8' )
print ( "Data yang diterima adalah" , rece_data )
7. Kirim data
send_content = "Masalah sedang berlangsung"
send_data = send_content.encode ( ' utf -8' )
new_client.send ( send_data ) _ _
new_client.close ( ) _

8. Tutup soket
tcp_server_socket.close ( ) _
Kode:
import socket
import threading
def handle ( ip_port , new_client ):
print ( "IP dan nomor port klien adalah: " , ip_port )
while True :
# 5. Terima data
# Kirim dan terima pesan menggunakan soket yang baru dikembalikan
rece_data = new_client.recv ( 1024 ) _ _
if rece_data :
rece_data = rece_data.decode ( ' utf -8' )
print ( "Data yang diterima adalah" , rece_data )
# 6. Kirim data
send_content = "Masalah sedang berlangsung"
send_data = send_content.encode ( ' utf -8' )
new_client.send ( send_data ) _ _
new_client.close ( ) _
else :
print ( "Klien offline" , ip_port )
break
if __name__ == '__main__' :
# 1. Buat soket server
# socket.AF_INET mewakili tipe IPv4
# SOCK_STREAM berarti tcp
tcp_server_socket = socket.socket ( socket.AF_INET , socket.SOCK_STREAM ) _ _ _ _ _ _
tcp_server_socket.setsockopt ( socket.SOL_SOCKET , socket.SO_REUSEADDR , True ) _ _ _ _ _ _
#Multiplexing port pelepasan port keluar server segera
#socket.SOL_SOCKET mewakili soket saat ini
#Opsi multiplexing socket._RetAddress
#True menentukan multiplexing
# 2. Ikat nomor port
# Parameter pertama menunjukkan alamat IP, umumnya tidak perlu mengatur atas untuk menunjukkan IP apa pun dari mesin
#Parameter kedua menunjukkan nomor port
tcp_server_socket.bind (( ' ' , 9090 ) )
# 3. Atur pemantauan
# 128: Menunjukkan jumlah maksimum koneksi yang menunggu untuk dibuat
tcp_server_socket.listen ( 128 ) _ _
# 4. Tunggu permintaan koneksi klien
#Setiap kali klien dan server berhasil membuat koneksi, soket baru akan dikembalikan
while True :
new_client , ip_port = tcp_server_socket.accept ( ) _
sub_thresd = threading . Thread ( target = handle , args = ( ip_port , new_client ))
sub_thresd.start ( ) _
# 7. Tutup soket
tcp_server_socket.close ( ) _
Pernyataan hak cipta: Konten artikel ini disumbangkan oleh pengguna terdaftar nama asli Alibaba Cloud. Hak cipta milik penulis asli. Komunitas pengembang Alibaba Cloud tidak memiliki hak cipta dan tidak menanggung tanggung jawab hukum yang sesuai. Untuk aturan spesifik, silakan lihat " Perjanjian Layanan Pengguna Komunitas Pengembang Alibaba Cloud " dan " Pedoman Perlindungan Kekayaan Intelektual Komunitas Pengembang Alibaba Cloud ". Jika Anda menemukan konten yang diduga plagiarisme di komunitas ini, isi formulir keluhan pelanggaran untuk melaporkannya. Setelah diverifikasi, komunitas ini akan segera menghapus konten yang diduga melanggar.
2. Shodan dan Python API
Ringkasan
Server TCP membuat soket dengan beberapa klien secara bersamaan, memerlukan satu thread untuk mempertahankan satu klien.
Langkah implementasi
1. Impor paket socket
import socket
2. Buat soket server
socket.socket(AddressFamily, Type)
socket.AF_INET mewakili tipe IPv4
SOCK_STREAM berarti tcp
Perlu mengatur multiplexing port untuk melayani beberapa klien
tcp_server_socket = socket.socket ( socket.AF_INET , socket.SOCK_STREAM ) _ _ _ _ _ _
#Multiplexing port pelepasan port keluar server segera
tcp_server_socket.setsockopt ( socket.SOL_SOCKET , socket.SO_REUSEADDR , True ) _ _ _ _ _ _
3. Ikat nomor port
tcp_server_socket.bind
Parameter pertama mewakili alamat IP, umumnya Anda tidak perlu menentukan IP apa pun yang mewakili mesin
Parameter kedua adalah nomor port
tcp_server_socket.bind (( ' ' , 9090 ) )
4. Atur pemantauan
Menunjukkan jumlah maksimum koneksi yang menunggu untuk dibuat 128
tcp_server_socket.listen ( 128 ) _ _
5. Tunggu permintaan koneksi klien
Soket baru dikembalikan setiap kali klien dan server berhasil membuat koneksi
while True :
new_client , ip_port = tcp_server_socket.accept ( ) _
sub_thresd = threading . Thread ( target = handle , args = ( ip_port , new_client ))
sub_thresd.start ( ) _
6. Terima data
Kirim dan terima pesan menggunakan soket yang baru dikembalikan
rece_data = new_client.recv ( 1024 ) _ _
if rece_data :
rece_data = rece_data.decode ( ' utf -8' )
print ( "Data yang diterima adalah" , rece_data )
7. Kirim data
send_content = "Masalah sedang berlangsung"
send_data = send_content.encode ( ' utf -8' )
new_client.send ( send_data ) _ _
new_client.close ( ) _

8. Tutup soket
tcp_server_socket.close ( ) _
Kode:
import socket
import threading
def handle ( ip_port , new_client ):
print ( "IP dan nomor port klien adalah: " , ip_port )
while True :
# 5. Terima data
# Kirim dan terima pesan menggunakan soket yang baru dikembalikan
rece_data = new_client.recv ( 1024 ) _ _
if rece_data :
rece_data = rece_data.decode ( ' utf -8' )
print ( "Data yang diterima adalah" , rece_data )
# 6. Kirim data
send_content = "Masalah sedang berlangsung"
send_data = send_content.encode ( ' utf -8' )
new_client.send ( send_data ) _ _
new_client.close ( ) _
else :
print ( "Klien offline" , ip_port )
break
if __name__ == '__main__' :
# 1. Buat soket server
# socket.AF_INET mewakili tipe IPv4
# SOCK_STREAM berarti tcp
tcp_server_socket = socket.socket ( socket.AF_INET , socket.SOCK_STREAM ) _ _ _ _ _ _
tcp_server_socket.setsockopt ( socket.SOL_SOCKET , socket.SO_REUSEADDR , True ) _ _ _ _ _ _
#Multiplexing port pelepasan port keluar server segera
#socket.SOL_SOCKET mewakili soket saat ini
#Opsi multiplexing socket._RetAddress
#True menentukan multiplexing
# 2. Ikat nomor port
# Parameter pertama menunjukkan alamat IP, umumnya tidak perlu mengatur atas untuk menunjukkan IP apa pun dari mesin
#Parameter kedua menunjukkan nomor port
tcp_server_socket.bind (( ' ' , 9090 ) )
# 3. Atur pemantauan
# 128: Menunjukkan jumlah maksimum koneksi yang menunggu untuk dibuat
tcp_server_socket.listen ( 128 ) _ _
# 4. Tunggu permintaan koneksi klien
#Setiap kali klien dan server berhasil membuat koneksi, soket baru akan dikembalikan
while True :
new_client , ip_port = tcp_server_socket.accept ( ) _
sub_thresd = threading . Thread ( target = handle , args = ( ip_port , new_client ))
sub_thresd.start ( ) _
# 7. Tutup soket
tcp_server_socket.close ( ) _
Pernyataan hak cipta: Konten artikel ini disumbangkan oleh pengguna terdaftar nama asli Alibaba Cloud. Hak cipta milik penulis asli. Komunitas pengembang Alibaba Cloud tidak memiliki hak cipta dan tidak menanggung tanggung jawab hukum yang sesuai. Untuk aturan spesifik, silakan lihat " Perjanjian Layanan Pengguna Komunitas Pengembang Alibaba Cloud " dan " Pedoman Perlindungan Kekayaan Intelektual Komunitas Pengembang Alibaba Cloud ". Jika Anda menemukan konten yang diduga plagiarisme di komunitas ini, isi formulir keluhan pelanggaran untuk melaporkannya. Setelah diverifikasi, komunitas ini akan segera menghapus konten yang diduga melanggar.
Artikel Terkait
-
6 Teknologi Opsional untuk Penyimpanan Data
Tim Pusat Bantuan
Jelajahi Lebih Banyak Penawaran Spesial
-
Short Message Service (SMS) & Layanan Email
Paket 50.000 email mulai dari USD 1,99, 120 pesan singkat mulai dari hanya USD 1,00
