이 내 코드에서 이벤트는 별표 관리자 인터페이스에 연결을 얻을 :나는 캔트 별표 관리자 인터페이스
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text.RegularExpressions;
using System.Text;
using System.Windows.Forms;
using System.Net.Sockets;
using System.Net;
using System.IO;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
private Socket clientSocket;
private byte[] data = new byte[1024];
private int size = 1024;
//------------------------------------------------------------------------------------------
public Form1()
{
InitializeComponent();
}
//------------------------------------------------------------------------------------------
[STAThread]
private void BtnConnect_Click(object sender, EventArgs e)
{
try
{
AddItem("Connecting...");
clientSocket = new Socket(AddressFamily.InterNetwork,
SocketType.Stream, ProtocolType.Tcp);
IPEndPoint iep = new IPEndPoint(IPAddress.Parse("192.168.1.155"), 5038);
clientSocket.BeginConnect(iep, new AsyncCallback(Connected), clientSocket);
}
catch (Exception exp)
{
AddItem(exp.Message);
}
}
//------------------------------------------------------------------------------------------
private void BtnDisconnect_Click(object sender, EventArgs e)
{
clientSocket.Close();
}
//------------------------------------------------------------------------------------------
void Connected(IAsyncResult iar)
{
clientSocket = (Socket)iar.AsyncState;
try
{
clientSocket.EndConnect(iar);
AddItem("Connected to: " + clientSocket.RemoteEndPoint.ToString());
clientSocket.BeginReceive(data, 0, size, SocketFlags.None,
new AsyncCallback(OnDataReceive), clientSocket);
}
catch (Exception exp)
{
AddItem("Error connecting: " + exp.Message);
}
}
//------------------------------------------------------------------------------------------
private void OnDataReceive(IAsyncResult result)
{
Socket remote = (Socket)result.AsyncState;
int recv = remote.EndReceive(result);
string stringData = Encoding.ASCII.GetString(data, 0, recv);
AddItem(stringData);
}
//------------------------------------------------------------------------------------------
private delegate void stringDelegate(string s);
private void AddItem(string s)
{
if (ListBoxEvents.InvokeRequired)
{
stringDelegate sd = new stringDelegate(AddItem);
this.Invoke(sd, new object[] { s });
}
else
{
ListBoxEvents.Items.Add(s);
}
}
//------------------------------------------------------------------------------------------
private void BtnLogin_Click(object sender, EventArgs e)
{
clientSocket.Send(Encoding.ASCII.GetBytes("Action: Login\r\nUsername: admin\r\nSecret: lastsecret\r\nActionID: 1\r\n\r\n"));
}
//------------------------------------------------------------------------------------------
}
}
문제는 내가 서버에 연결할 때이 "별표 통화 관리자/1.1"메시지가 나타날 것입니다. 서버에 연결 한 후 서버에 로그인했는데 메시지가 표시되지 않습니다. 별표에서 이벤트를 가져오고 싶습니다. 네트워크 소켓 사용에 문제가 있습니까? 특수 명령을 사용하여 별표에 이벤트 수신을 알리는 것이 좋습니다.
감사합니다. Matt. 사실 TCP에 익숙하지 않습니다. NET 소켓 프로그래밍에 익숙하지 않습니다. – Karadous