[c#] โค้ดเชื่อมต่อจาก Server แต่อยากให้อยากระหว่าง ส่งข้อและรับข้อมูล
เขียนโค้ดเชื่อต่อกับ Server ได้แล้วครับ แต่อยากแยกระหว่าง การส่งข้อมูลไปยัง Server และ รับข้อมูลมากจาก Server ไม่ให้ทำงานร่วมกัน
Code (C#)
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading;
using System.Windows.Forms;
using Utility;
using Microsoft.Office.Interop.Excel;
namespace Wifi_Control
{
public partial class Form1 : Form
{
private Socket client;
private Thread receiver;
private byte[] data = new byte[1024];
private byte[] data1 = new byte[1024];
public string in_data;
private string[] getdata;
private int val;
private DateTime datetime;
public Form1()
{
InitializeComponent();
}
private void connected(IAsyncResult iar)
{
try
{
client.EndConnect(iar);
lblsta.Text = "Connected";
receiver = new Thread(new ThreadStart(ReceiveData));
receiver.Start();
}
catch
{
MessageBox.Show("ไม่สามารถเชื่อมต่อได้ โปรดตรวจสอบข้อมูล");
}
}
private void ReceiveData() //รับ packet จาก Client/Server
{
int recv;
string strData;
while (client.Connected)
{
try
{
recv = client.Receive(data); // คืนค่าเป็นความยาวของ Data
strData = Encoding.Default.GetString(data, 0, recv);
getdata = strData.Split(','); //แบ่งข้อความตรงที่มี , คั่น
textBox1.Text = getdata[1]; //ดึงข้อมูลจาก Server โดยเป็นอาเรย์
//val = Convert.ToInt32(getdata[1]);
}
catch (SocketException ex)
{
MessageBox.Show(ex.Message, "Client");
}
}
}
private void BtnCon_Click(object sender, EventArgs e)
{
try
{
client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
IPEndPoint iep = new IPEndPoint(IPAddress.Parse(TxtIP.Text), int.Parse(TxtPort.Text));
client.BeginConnect(iep, new AsyncCallback(connected), client);
timer1.Start();
}
catch
{
MessageBox.Show("เชื่อมต่อเซิฟเวอร์ไม่สำเร็จ โปรดตรวจความถูกต้อง");
}
}
private void SendData(IAsyncResult iar) //ฟังชั่นส่งข้อมูล
{
try
{
Socket remote = (Socket)iar.AsyncState;
int sent = remote.EndSend(iar);
}
catch (SocketException ex)
{
MessageBox.Show(ex.Message);
}
}
private void LoadData(IAsyncResult iar) //ฟังชั่นรับข้อมูล
{
try
{
Socket remote = (Socket)iar.AsyncState;
int sent = remote.EndSend(iar);
}
catch (SocketException ex)
{
MessageBox.Show(ex.Message);
}
}
private void button1_Click(object sender, EventArgs e) //ส่งค่า ON
{
InputTxt.Text = "ON";
BtnSend_Click(sender, e);
}
private void button2_Click(object sender, EventArgs e) //ส่งค่า OFF
{
InputTxt.Text = "OFF";
BtnSend_Click(sender, e);
}
private void BtnSend_Click(object sender, EventArgs e) //ปุ่มส่งข้อมูล
{
if (client.Connected)
{
byte[] input = Encoding.Default.GetBytes(InputTxt.Text);
client.BeginSend(input, 0, input.Length, 0, new AsyncCallback(SendData), client);
}
else
{
MessageBox.Show("ไม่สามารถเชื่อมต่อเซิฟเวอร์ได้ หรือ ไม่มีการเชื่อมต่อ");
}
}
private void btnload_Click(object sender, EventArgs e )//ปุ่มรับข้อมูล
{
if (client.Connected)
{
byte[] input = Encoding.Default.GetBytes(txtload.Text);
client.BeginSend(input, 0, input.Length, 0, new AsyncCallback(SendLoad), client);
}
else
{
MessageBox.Show("ไม่สามารถเชื่อมต่อเซิฟเวอร์ได้");
}
}
private void timer1_Tick(object sender, EventArgs e) //รับข้อมูลทุกๆ 2 วิ
{
txtload.Text = "LOAD";
btnload_Click(sender, e);
}
}
}
Tag : .NET, C#
Date :
2016-09-03 10:58:42
By :
meatspin
View :
1075
Reply :
3
ตรูขำมึงดีวะ (ระดับนี้แล้ว (มองแป๊บหนึ่ง)) ก็รู้แล้ว
Code (C#)
namespace Wifi_Control
ปล. คำว่า "ไอ้พวกเด็กเมื่อวานซืน (อ.มหาวิทยาลัยทั้งหลายแหล่)"
Date :
2016-09-03 15:39:54
By :
หน้าฮี
@BossError
--- มึงบอกกูซิว่า กูจะใช้ประโยชน์อะไรได้จากคำถามของมึง อย่างไรบ้าง (??? )
---- มันสมองมันคนละขั้น/ชั้นกัน
ระดับนี้แล้ว (ไม่ต้องเกรงใจกัน)
...
...
...
+55555
ปล. มันคนละชั้นกัน (+55555)
Date :
2016-09-03 15:44:36
By :
หน้าฮี
อยากช่วยนะ แต่ต้องช่วยตัวเองก่อนนะ google นักหนา ค้นหาคำว่า Send data from client to server using C# หรือ Send data from server to client using C# แอบเข้าไปดูข้อมูลการตั้งกระทู้ โอ้โห ตั้งแต่ ปี 2014 - 2016
Date :
2016-09-03 18:58:56
By :
bigsuntat
Load balance : Server 02