Server

5
- Server : Đầu tiên khai báo 1 đối tượng IPendPoint có địa chỉ IP bất kì và công lắng nghe là 9999 Private ipendpoint As IPEndPoint = New IPEndPoint ( IPAddress .Any, 9999) sau đó gắn đối tượng đó vào server và bắt đầu cho server lắng nghe các kết nối bằng phương thức start() server = New TcpListener (ipendpoint) server.Start() ta khai báo kiểu dữ liệu connection để tiếp nhận các dữ liệu nhận và gửi đi của server Private Structure Connection Dim stream As NetworkStream Dim streamw As StreamWriter Dim streamr As StreamReader Dim nick As String End Structure khi đối tượng NetworkStream được tạo ra, đối tượng client sẽ không được tham chiếu đến nữa, mọi thông tin liên lạc với các client sẽ thong qua NetworkStream đối tượng StreamWriter dung để ghi nhận các dữ liệu từ server rồi gửi đến client bằng phương thức Flush() đối tượng StreamReader dùng để đón nhận các dữu liệu từ client gửi đến server

Transcript of Server

Page 1: Server

- Server :

Đầu tiên khai báo 1 đối tượng IPendPoint có địa chỉ IP bất kì và công lắng nghe là 9999

Private ipendpoint As IPEndPoint = New IPEndPoint(IPAddress.Any, 9999)

sau đó gắn đối tượng đó vào server và bắt đầu cho server lắng nghe các kết nối bằng phương thức start()

server = New TcpListener(ipendpoint)server.Start()

ta khai báo kiểu dữ liệu connection để tiếp nhận các dữ liệu nhận và gửi đi của server

Private Structure Connection Dim stream As NetworkStream Dim streamw As StreamWriter Dim streamr As StreamReader Dim nick As String End Structure

khi đối tượng NetworkStream được tạo ra, đối tượng client sẽ không được tham chiếu đến nữa, mọi thông tin liên lạc với các client sẽ thong qua NetworkStream

đối tượng StreamWriter dung để ghi nhận các dữ liệu từ server rồi gửi đến client bằng phương thức Flush()

đối tượng StreamReader dùng để đón nhận các dữu liệu từ client gửi đến server

Khi có yêu cầu kết nối đến từ phía client server sẽ đồng ý bằng phương thức AcceptTcpClient

client = server.AcceptTcpClient

sau đó server sẽ tạo ra các đối tượng để lấy dữ liệu từ client gửi đến và gửi dữ liệu cho client

Page 2: Server

khi dữ liệu đầu tiên từ client gửi đến, server hiểu đó là tên người chơi, server sẽ đọc tên người chơi bằng phương thức readline và hiển thị lên màn hình console

c.nick = c.streamr.ReadLine

Console.WriteLine(c.nick & " ket noi ")

Ở các lần gửi dữ liệu tiếp theo sẽ là các phương án mà client gửi cho server, server sẽ so sánh đáp án, nếu đúng sẽ gửi xâu “ok” nếu sai gửi xâu “sai” cho client.If tmp = "A.1/6" Or…Then con.streamw.Write("ok" & vbCrLf)elsecon.streamw.Write("sai" & vbCrLf)end ifcon.streamw.Flush() server tạo ra nhiều luồng để có thể đáp ứng được nhiều kết nối từ nhiều clientDim t As New Threading.Thread(AddressOf langnghe) t.Start(c)

khi ngoại lệ xảy ra, tức là c client ngắt kết nối, server sẽ thông báo trên màn hình console:Console.WriteLine(con.nick & " ngat ket noi")

- Client:Khi form game được hiển thị, client sẽ kết nối đến server ở địa chỉ IP là 127.0.0.1( client và server chạy trên cùng 1 máy) và port là port mà server đang lắng nghe tức là 9999 bằng phương thức Connect()client sẽ kiểm tra xem đã kết nối server thành công hay chưa bằng phương thức Connected, nếu thành công thì tiến hành tạo ra các các đối tượng để nhận và gửi dữ liệu như phía server, sau đó gửi dữ liệu là tên nguwoif chơi đã nhập khi hộp inputbox hiện ra đến cho server. Nếu không kết nối được sẽ thong báo lỗi

Page 3: Server

Try client.Connect("127.0.0.1", 9999) If client.Connected Then stream = client.GetStream streamw = New StreamWriter(stream) streamr = New StreamReader(stream)

streamw.WriteLine(nick) streamw.Flush()

th.Start() Else MessageBox.Show("Không có kết nối đến server") Application.Exit() End If Catch ex As Exception MessageBox.Show("Không có kết nối đến server") Application.Exit() End Try

Khi nguwoif chơi trả lời câu hỏi, giá trị text của button được chọn sẽ được gửi đến cho server

Private Sub A_Click(sender As Object, e As EventArgs) Handles A.Click streamw.WriteLine(A.Text) streamw.Flush() Timer1.Enabled = True cho(False)

End SubDữ liệu sẻvẻ gửi đến sẽ được client xử lí trong hàm Listen()

Private Sub Listen() While client.Connected Try

nhanketqua(streamr.ReadLine)

Catch

Page 4: Server

MessageBox.Show("Không có kết nối đến server") Application.Exit() End Try End While End Sub