01/10/2018, 10:55

Làm server python truy cập được trên internet

Chào các bạn
Mình đang làm một cái con Server python để phục vụ cho CHAT
Nhưng mình có một cái 2 cái PC
Một cái làm Client
Còn lại cái kia là Server
Nhưng mà mình không biết cài cho con Server để nó có thể được kết nối từ Internet luôn
Trên diễn đàn có bạn nào làm cái này chưa chỉ mình với

Dark.Hades viết 12:56 ngày 01/10/2018

Server bạn chạy ở đâu? Vps? Dedicate?
Nếu là tạo server http thì có thể tìm hiểu qua thằng simplehttpserver của python

Và điều quan trọng nữa là bạn phải hiểu cách thức làm việc của 1 ứng dụng qua internet. Nó phải được chạy trên 1 cổng, 1 server name. Sau đó client kết nối tới cổng và cổng dẫn vào ứng dụng

Trươnfg hợp làm trên lan thì bạn phải mở port cho máy trong lan, set port lên wan. Cái này config ở modem

Henry viết 13:09 ngày 01/10/2018

Mình chưa làm bao giờ. Nhưng qua quá trình search. Mình thấy có một cái chắc phù hợp với bạn. Bạn thử tham khảo, nếu làm được, chia sẻ lên cho mọi người với
Link: Ruslan

Nguyễn Hiến viết 12:55 ngày 01/10/2018

Ok như vầy
Mình làm một cái Chat server
Hồi còn con gà là viết Server với Client chung trong một cái PC đúng không
Thế bây giờ nếu muốn viết cho nó truy cập được qua mạng thì mình cần làm gì ?

Đây là code Server test

import os 
import threading
import socket
import SocketServer

SERVER_HOST = '0.0.0.0'
SERVER_PORT = 5000
BUF_SIZE = 1024
MSG = "Hello client."

class ForkingServerRequestHandler(SocketServer.BaseRequestHandler):
	def handle(self):
		current_process_id = os.getpid()
		name_of_client = self.request.recv(BUF_SIZE)
		print "Accept connection from %s" % name_of_client
		data = self.request.recv(BUF_SIZE)	
		print "Client %s 's data: %s" % (current_process_id,data)
		self.request.send(MSG)
		return

class ForkingServer(SocketServer.ForkingMixIn, SocketServer.TCPServer, ):
	pass

def main():
	server = ForkingServer((SERVER_HOST, SERVER_PORT), ForkingServerRequestHandler)
	server_thread = threading.Thread(target = server.serve_forever)
	server_thread.setDaemon(False)
	server_thread.start()
	print "Server loop is running at PID: %s" % os.getpid()

if __name__ == '__main__':
	main()
Dark.Hades viết 13:07 ngày 01/10/2018

Hiện tại ứng dụng của bạn chỉ cần upload lên 1 nhà cung cấp vps là có thể chat online

Trường hợp muốn làm trên máy tại nhà thì bạn phải config đưa máy lên online thông qua router. Mỗi router config 1 kiểu, bạn google để nắm cách làm căn bản:

  • mở port wan modem
Nguyễn Hiến viết 13:01 ngày 01/10/2018

Mình kiếm được tài liệu rồi để mình dịch
Nếu mà làm được thì mình sẽ upcode cho tại thấy cái này trên diễn đàn cũng chưa có bạn nào viết

Nguyễn Hiến viết 13:05 ngày 01/10/2018

Ok sau vài tiếng dịch sạch cái đống tài liệu chả được cái gì cã thì mình đã làm xong một con server có thể truy cập từ xa.
Đầu tiên mình phải viết hai cái scripts là Server.py và Client.py
Bước hai tìm local ip (ipv4)
Bước ba lên mạng nhập vào google whatismyip.com rồi tìm public ip của các bạn
Bước bốn nhập vào mạng cái con số ip để truy cập vào router của các bạn cái phần này nó tên là Nat port hoặc là port fowarding cứ lên mạng tìm youtube cái phần Hacking metaesploit on wan rồi lê đến cái phần port fording của tụi nó làm là sẽ dễ hiểu bước này cái phần nhập ip thì sẽ là IPV4 của các bạn và port là số port sử dụng cho cái scripts của các bạn ví dụ
Server port là 5000
Bước năm nhập địa chỉ IPV4 của các bạn vào Server.py và địa chỉ Public vào cái thằng Client.py
Bước sáu là chạy.
Ok bây giờ thì tha hồ nhé đứng ở Bắc cực còn bắt được Server đấy tin mình haha
À quên cái code Server bên trên của mình xài đa luồng tức là nó có thể phục vụ cho nhiều client cùng một lúc mà không cần thời gian wait các bạn thích thì dùng nha.

Vũ Thanh viết 13:01 ngày 01/10/2018

python -m SimpleHTTPServer

Nguyễn Hiến viết 13:06 ngày 01/10/2018

Bạn thích làm HTTP Server à

Bài liên quan
0