|
|
|
สอบถามเรื่อง C# กับ WPF ครับผม สอบถามถึง การทำ SERVER และ CLIENT ครับ |
|
|
|
|
|
|
|
รบกวนด้วยนะครับตอนนี้ผม งง ไป หมดแล้ววววว T_T
|
|
|
|
|
Date :
2011-12-18 13:50:11 |
By :
bigsuntat |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
รอสักครู่
|
|
|
|
|
Date :
2011-12-18 13:54:33 |
By :
Kotakin |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ขอเป็น WPF กับ C# นะครับ คือผม จะไปทำ เป็นเกมส์ WII แบบ Network นะครับ แต่ตอนนี้ ต้องทำ DEMO ไปก่อน ก็คือ เวลา ของเครื่อง SERVER มันสามารถ ไปขึ้นที่ฝั่ง CLIENT ได้เลยนะครับ งง ปะครับ
|
|
|
|
|
Date :
2011-12-18 13:55:38 |
By :
bigsuntat |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
เวลาโชว์ที่บนโปรแกรม Client รึ เช่น 18/12/2554 14:13:03 แบบนี้เหรอ
|
|
|
|
|
Date :
2011-12-18 14:08:30 |
By :
Kotakin |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
อ่อครับ เป็น ยังงั้นก็ได้หรือเป็น แบบ นาฬิกา เลย อะครับ ถ้าเป็น แบบ นาฬิกาเลย ละครับ เช่น
|
|
|
|
|
Date :
2011-12-18 14:14:08 |
By :
bigsuntat |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
งงปะครับท่าน
|
|
|
|
|
Date :
2011-12-18 14:21:47 |
By :
bigsuntat |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ผมทำแบบส่งเวลาเเสดงที่ Client ให้ละกันครับที่เหลือประยุก เอาละกันนะครับ
|
|
|
|
|
Date :
2011-12-18 14:26:21 |
By :
Kotakin |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ได้ครับ รบกวน ส่งมาที่ [email protected] เลยครับ
|
|
|
|
|
Date :
2011-12-18 14:31:39 |
By :
bigsuntat |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ส่งมายังคับ
|
|
|
|
|
Date :
2011-12-18 14:39:48 |
By :
bigsuntat |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ส่งไปละครับ
|
|
|
|
|
Date :
2011-12-18 14:54:11 |
By :
Kotakin |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
คุณครับมัน error ตรง runClient.SendData(S2BArr(tbx_Msg.Text));// to server
|
|
|
|
|
Date :
2011-12-18 15:08:01 |
By :
bigsuntat |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ลอง Capture รูปมาให้ดูหน่อยครับ มันฟ้องว่าไร
|
|
|
|
|
Date :
2011-12-18 15:11:53 |
By :
Kotakin |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ของผม รันปกดี
|
|
|
|
|
Date :
2011-12-18 15:15:45 |
By :
Kotakin |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Date :
2011-12-18 15:16:49 |
By :
bigsuntat |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ผม แคปหน้าจอมาแล้ว ครับ
|
|
|
|
|
Date :
2011-12-18 15:23:12 |
By :
bigsuntat |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ลอง Capture แบบรูปผมมาให้ดูหน่อยครับ
|
|
|
|
|
Date :
2011-12-18 15:23:58 |
By :
Kotakin |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
OK ครับผมได้แล้ว แต่ ผมอยากได้ แบบว่า เวลา ของ SERVER อะครับ แล้ว ก็มีใน CLIENT ด้วย
|
|
|
|
|
Date :
2011-12-18 15:25:09 |
By :
bigsuntat |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
นี่คือ CODE ฝั่ง SERVER
Code (C#)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using NetComm;
using System.Windows.Threading;
namespace WPFServer
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
private Host runHost = new Host(2020);
DispatcherTimer timer;
public MainWindow()
{
InitializeComponent();
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
runHost.onConnection += new Host.onConnectionEventHandler(runHost_onConnection);
runHost.DataReceived += new Host.DataReceivedEventHandler(runHost_DataReceived);
runHost.lostConnection += new Host.lostConnectionEventHandler(runHost_lostConnection);
runHost.StartConnection();
}
private void runHost_onConnection(string id)
{
if (id == "client")
{
lbl_Status.Content = "Connect";
lbl_Status.Background = Brushes.Green;
SendTime();
}
}
private void runHost_DataReceived(string id, byte[] data)
{
tbx_Log.Text += id + " : " + BArr2S(data);
}
private void runHost_lostConnection(string id)
{
if (id == "client")
{
lbl_Status.Content = "Lost Connect";
lbl_Status.Background = Brushes.Red;
}
}
private byte[] S2BArr(string data)
{
return ASCIIEncoding.UTF8.GetBytes(data);
}
private string BArr2S(byte[] data)
{
return ASCIIEncoding.UTF8.GetString(data);
}
public void SendTime()
{
timer = new DispatcherTimer();
timer.Tick += new EventHandler(delegate(object s, EventArgs a)
{
runHost.SendData("client", S2BArr("time," + DateTime.Now.ToString()));
});
timer.Interval = TimeSpan.FromMilliseconds(1000);
timer.Start();
}
private void btn_Send_Click(object sender, RoutedEventArgs e)
{
runHost.SendData("client", S2BArr("msg,"+tbx_Msg.Text));
}
private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
if (runHost.Listening)
runHost.CloseConnection();
}
}
}
รบกวนช่วยอธิบายหน้าที่ หรือ COMMENT ในแต่ละขั้นตอนได้ไหมครับผมมือใหม่
|
|
|
|
|
Date :
2011-12-18 15:27:44 |
By :
bigsuntat |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
นี่คือ CODE ฝั่ง CLIENT
Code (C#)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using NetComm;
using System.Windows.Threading;
namespace WPFClient
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
private Client runClient = new Client();
public MainWindow()
{
InitializeComponent();
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
runClient.Connected += new Client.ConnectedEventHandler(runClient_Connected);
runClient.DataReceived += new Client.DataReceivedEventHandler(runClient_DataReceived);
runClient.Disconnected += new Client.DisconnectedEventHandler(runClient_Disconnected);
}
private void runClient_Connected()
{
lbl_Status.Content = "Connect";
lbl_Status.Background = Brushes.Green;
}
private void runClient_DataReceived(byte[] data, string id)
{
string[] lineArr = BArr2S(data).Split(',');
if (lineArr[0] == "time")
{
lbl_TimeServer.Content = lineArr[1];
}
else
{
tbx_Log.Text += lineArr[1]+"\r\n";
}
}
private void runClient_Disconnected()
{
lbl_Status.Content = "Lost Connect";
lbl_Status.Background = Brushes.Red;
}
private byte[] S2BArr(string data)
{
return ASCIIEncoding.UTF8.GetBytes(data);
}
private string BArr2S(byte[] data)
{
return ASCIIEncoding.UTF8.GetString(data);
}
private void btn_Send_Click(object sender, RoutedEventArgs e)
{
runClient.SendData(S2BArr(tbx_Msg.Text));// to server
}
private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
if (runClient.isConnected)
runClient.Disconnect();
}
private void btn_Connect_Click(object sender, RoutedEventArgs e)
{
runClient.Connect(tbx_IPServer.Text,2020,"client");
}
}
}
รบกวนช่วยอธิบายหน้าที่ หรือ COMMENT ในแต่ละขั้นตอนได้ไหมครับผมมือใหม่
|
|
|
|
|
Date :
2011-12-18 15:28:08 |
By :
bigsuntat |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
คุณช่วยอธิบาย CODE ได้ไหมครับ
|
|
|
|
|
Date :
2011-12-18 15:32:42 |
By :
bigsuntat |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ใจเย็นสิครับ -*-
Code (C#)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using NetComm;
using System.Windows.Threading;
namespace WPFServer
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
private Host runHost = new Host(2020);//Server เปิด port 2020
DispatcherTimer timer;
public MainWindow()
{
InitializeComponent();
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
runHost.onConnection += new Host.onConnectionEventHandler(runHost_onConnection); //Event เมื่อมี client เชื่อมต่อเข้ามา ไปดูที่ funtion runHost_onConnection
runHost.DataReceived += new Host.DataReceivedEventHandler(runHost_DataReceived); // Event เมื่อมี Client ส่งข้อมูลมา ไปดูที่ funtion runHost_DataReceived
runHost.lostConnection += new Host.lostConnectionEventHandler(runHost_lostConnection); //Event เมื่อ Client ออกจากระบบ ไปดูที่ funtion runHost_lostConnection
runHost.StartConnection();// ทำการเปิด Server
}
private void runHost_onConnection(string id)//เมื่อมี Client เชื่อมต่อมา จะส่ง id ของ Client มา function นี้
{
if (id == "client")
{
lbl_Status.Content = "Connect";
lbl_Status.Background = Brushes.Green;
SendTime();
}
}
private void runHost_DataReceived(string id, byte[] data)//เมื่อ Client ส่งข้อมูลมา id คือใครส่งมา เเละ data คือข้อมมูลที่ส่ง
{
tbx_Log.Text += id + " : " + BArr2S(data);//แปลง byte[] เป็น string โดยส่ง data ไป
}
private void runHost_lostConnection(string id)// เมื่อ Client หลุด id คือชื่อของ Client ที่หลุด
{
if (id == "client")
{
lbl_Status.Content = "Lost Connect";
lbl_Status.Background = Brushes.Red;
}
}
private byte[] S2BArr(string data)//แปลง String เป็น Byte[]
{
return ASCIIEncoding.UTF8.GetBytes(data);
}
private string BArr2S(byte[] data)//แปลง Byte[] เป็น String
{
return ASCIIEncoding.UTF8.GetString(data);
}
public void SendTime()//ใช้ Timer ส่งเวลาไปยัง Server ทุก 1 ms
{
timer = new DispatcherTimer();
timer.Tick += new EventHandler(delegate(object s, EventArgs a)
{
runHost.SendData("client", S2BArr("time," + DateTime.Now.ToString()));//SendData("ส่งถึงใคร",S2BArr("ส่งข้อมูลอะไรไป"))
});
timer.Interval = TimeSpan.FromMilliseconds(1000);//ส่ง 1 ms
timer.Start();
}
private void btn_Send_Click(object sender, RoutedEventArgs e)
{
runHost.SendData("client", S2BArr("msg," + tbx_Msg.Text));//SendData("ส่งถึงใคร",S2BArr("ส่งข้อมูลอะไรไป"))
}
private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
if (runHost.Listening)
runHost.CloseConnection();
}
}
}
|
|
|
|
|
Date :
2011-12-18 15:39:54 |
By :
Kotakin |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Code (C#)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using NetComm;
using System.Windows.Threading;
namespace WPFClient
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
private Client runClient = new Client();
public MainWindow()
{
InitializeComponent();
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
runClient.Connected += new Client.ConnectedEventHandler(runClient_Connected);//Event เมื่อเชื่อมต่อ server สำเร็จ
runClient.DataReceived += new Client.DataReceivedEventHandler(runClient_DataReceived);//Event เมื่อมีข้อมูลส่งเข้ามา
runClient.Disconnected += new Client.DisconnectedEventHandler(runClient_Disconnected);//Event เมื่อหลุดการเชื่อมต่อ
}
private void runClient_Connected()//เมื่อเชื่อมต่อสำเร็จจะทำอะไร
{
lbl_Status.Content = "Connect";
lbl_Status.Background = Brushes.Green;
}
private void runClient_DataReceived(byte[] data, string id)//เมื่อมีข้อมูลส่งมา
{
//รูปแบบการส่งจาก server = time,18/12/2554 14:32:01
string[] lineArr = BArr2S(data).Split(',');//จับตัว , เเละ lineArr[0] มันจะ = time เเละ lineArr[1] = 18/12/2554 14:32:01
if (lineArr[0] == "time")
{
lbl_TimeServer.Content = lineArr[1];
}
else
{
tbx_Log.Text += lineArr[1]+"\r\n";
}
}
private void runClient_Disconnected()//เมื่อหลุดการเชื่อมต่อ
{
lbl_Status.Content = "Lost Connect";
lbl_Status.Background = Brushes.Red;
}
private byte[] S2BArr(string data)//แปลง String เป็น Byte[]
{
return ASCIIEncoding.UTF8.GetBytes(data);
}
private string BArr2S(byte[] data)//แปลง Byte[] เป็น String
{
return ASCIIEncoding.UTF8.GetString(data);
}
private void btn_Send_Click(object sender, RoutedEventArgs e)
{
runClient.SendData(S2BArr(tbx_Msg.Text));// to server
}
private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
if (runClient.isConnected)
runClient.Disconnect();
}
private void btn_Connect_Click(object sender, RoutedEventArgs e)
{
runClient.Connect(tbx_IPServer.Text, 2020, "client");//เชื่อมต่อกับ server sample = .Connect("server IP อะไร", port อะไร , "ชื่อClient ของคุณ")
}
}
}
|
|
|
|
|
Date :
2011-12-18 15:49:53 |
By :
Kotakin |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ขอ facebook คุณได้ปะครับเอาไว้ติดต่อ
|
|
|
|
|
Date :
2011-12-18 15:52:02 |
By :
bigsuntat |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Date :
2011-12-18 17:13:46 |
By :
Drewsn32 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
แอดมาเเล้วนะ ^^
|
|
|
|
|
Date :
2011-12-18 23:16:38 |
By :
Kotakin |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 03
|