minh đang thực hành xây dựng 1 Server và 1 Client trên window form,
còn Server chỉ có 1 button Start để bắt đầu lắng nghe yêu cầu kết nối của Client, 1 textbox tbReceive để hiển thị dữ liệu nhận từ Client
mình sử dụng lớp TcpListener để tạo ra Server và lớp TcpClient để tạo Client
còn đây là lỗi Object reference not set to an instance of an object. ở Client đoạn code mình để highlight. mong các pro giúp đỡ giùm cho. thanks mọi người đã đọc bài.
code của Server
code của Client
còn Server chỉ có 1 button Start để bắt đầu lắng nghe yêu cầu kết nối của Client, 1 textbox tbReceive để hiển thị dữ liệu nhận từ Client
mình sử dụng lớp TcpListener để tạo ra Server và lớp TcpClient để tạo Client
còn đây là lỗi Object reference not set to an instance of an object. ở Client đoạn code mình để highlight. mong các pro giúp đỡ giùm cho. thanks mọi người đã đọc bài.
code của Server
Code:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.Net; using System.Net.Sockets; using System.Threading; using System.IO; namespace network_form_server { public partial class frmSERVER : Form { public frmSERVER() { InitializeComponent(); CheckForIllegalCrossThreadCalls = false; } IPAddress ip; IPEndPoint iep; TcpListener tcplServer; TcpClient client; StreamReader sr; StreamWriter sw; private void Start_Click(object sender, EventArgs e) { //tạo ipEndPoint ip = IPAddress.Parse("127.0.0.1"); iep = new IPEndPoint(ip, 13000); //tạo tcplistener Server tcplServer = new TcpListener(iep); tcplServer.Start(); //bắt đầu lắng nghe //tạo kết nối vơi client client = tcplServer.AcceptTcpClient(); //tạo các stream để gửi và nhận dữ liệu từ client sr = new StreamReader(client.GetStream(),Encoding.UTF8); sw = new StreamWriter(client.GetStream(),Encoding.UTF8); tbReceive.Text = "chấp nhận kết nối từ : " + client.ToString() + "\r\n"; sw.WriteLine("connneted succeed \r\n"); sw.Flush(); //tạo thread để nhận dữ liệu Thread receive = new Thread(new ThreadStart(Receive)); receive.Start(); } private void Receive() { while (true) { //nhận dữ liệu từ client string s = sr.ReadLine(); tbReceive.Text += s + "\r\n"; Send(s); if (s.ToUpper().Equals("QUIT")) break; } sw.Close(); sr.Close(); client.Close(); tcplServer.Stop(); } private void Send(string s) { if (s.ToUpper().Equals("GETDATE")) { sw.WriteLine(DateTime.Now.ToShortDateString()); sw.Flush(); } else if (s.ToUpper().Equals("GETTIME")) { sw.WriteLine(DateTime.Now.ToShortTimeString()); sw.Flush(); } } } }
Code:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.Net; using System.Net.Sockets; using System.Threading; using System.IO; namespace network_from_client { public partial class Form1 : Form { public Form1() { InitializeComponent(); CheckForIllegalCrossThreadCalls = false; } IPAddress ip; IPEndPoint iep; TcpClient tcpClient; private void btnStart_Click(object sender, EventArgs e) { //tạo ClientTCP ip = IPAddress.Parse("127.0.0.1"); iep = new IPEndPoint(ip, 13000); TcpClient tcPClient = new TcpClient(); [COLOR="#FFD700"]tcpClient.Connect(iep);[/COLOR] //tạo Thread để nhận dữ liệu Thread thReceive = new Thread(new ThreadStart(Receive)); thReceive.Start(); } private void Receive() { while (true) { //tạo 1 stream để nhận dữ liệu StreamReader sr = new StreamReader(tcpClient.GetStream(), Encoding.UTF8); String s = sr.ReadLine(); tbReceive.Text += s + "\r\n"; if (s.ToUpper().Equals("QUIT")) break; } } private void btnSend_Click(object sender, EventArgs e) { //tạo 1 stream để gửi dữ liệu đi StreamWriter sw = new StreamWriter(tcpClient.GetStream(),Encoding.UTF8); sw.WriteLine(tbSend.Text); sw.Flush(); tbReceive.Text += tbSend.Text + "\r\n"; if (tbSend.Text.ToUpper().Equals("QUIT")) { sw.Close(); tcpClient.Close(); } } } }
Comment