C\#Socket 통신 의 실현(다 중 클 라 이언 트 를 동시에 감청)
// socket
// : 、 、
Socket serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
//2. IP
string str = "127.0.0.1";
int ports = 55555;
IPAddress ip = IPAddress.Parse(str);
IPEndPoint ipENdpoint = new IPEndPoint(ip, ports);
serverSocket.Bind(ipENdpoint);
//3.
serverSocket.Listen(10);
label5_Timer.Text = " ・・・";
//4.
ThreadPool.QueueUserWorkItem(new WaitCallback(this.StartAcceptClient), serverSocket);
}
public void StartAcceptClient(object state)
{
var serverSocket = (Socket)state;
this.AppendTextLog(" ");
while (true)
{
try
{
Socket prosock = serverSocket.Accept();
// IP socket
dicSocket.Add(prosock.RemoteEndPoint.ToString(), prosock);
string ipPort = prosock.RemoteEndPoint.ToString();
MedicineDevice ns = new MedicineDevice();
SQLMachine j = new SQLMachine();
j.MedicineDeviceStatus(ipPort, " ");
//
string stinfo = prosock.RemoteEndPoint.ToString();
this.AppendTextLog(string.Format(" {0} ", stinfo));
ClientProSocketList.Add(prosock);
//
ThreadPool.QueueUserWorkItem(new WaitCallback(this.ReceiveData), prosock);
}
catch (Exception e)
{
return;
//throw;
}
}
public void ReceiveData(object obj)
{
var prosock = (Socket)obj;
byte[] data = new byte[1024 * 1024];
//
while (true)
{
int realen = 0;
try
{
realen = prosock.Receive(data, 0, data.Length, SocketFlags.None);
}
catch (Exception e)
{
//
AppendTextLog(string.Format(" {0} ", prosock.RemoteEndPoint.ToString()));
StopCOnnecte(prosock);
return;
}
if (realen <= 0)
{
//
AppendTextLog(string.Format(" {0} :", prosock.RemoteEndPoint.ToString()));
}
prosock.Shutdown(SocketShutdown.Both);
prosock.Close();
ClientProSocketList.Remove(prosock);
return;
}
//
string fromClientMsg = Encoding.Default.GetString(data, 0, realen);
AppendTextLog(string.Format(" {0} :{1}", prosock.RemoteEndPoint.ToString(), fromClientMsg));}}
private void StopCOnnecte(Socket prosock)
{
try
{
if (prosock.Connected)
{
prosock.Shutdown(SocketShutdown.Both);
prosock.Close(100);
}
}
catch (Exception ex)
{
}
}
public void AppendTextLog(string txt)
{
if (textBox_Message.InvokeRequired)
{
textBox_Message.BeginInvoke(new Action<string>(s =>
{
this.textBox_Message.Text = string.Format("{0}\r
{1}", s, textBox_Message.Text);
}
), txt);
//
//textBox_Message.Invoke(new Action<string>(s =>
// {
// this.textBox_Message.Text = string.Format("{0}\r
{1}", s, textBox_Message.Text);
// }
// ), txt);
}
else
{
this.textBox_Message.Text = string.Format("{0}\r
{1}", txt, textBox_Message.Text);
}
}
// '{' '}'
C\#Socket 의 Listen 감청 방법코드 봐~
_serverSocket.Listen(10);
public void Listen(int backlog);
Listen 방법의 전체 매개 변 수 는 연결 을 기다 리 는 최대 수량 을 표시 합 니 다.이 수량 은 연 결 된 수량 을 포함 하지 않 습 니 다.이상 은 개인 적 인 경험 이 므 로 여러분 에 게 참고 가 되 기 를 바 랍 니 다.여러분 들 도 저 희 를 많이 응원 해 주시 기 바 랍 니 다.만약 잘못 이 있 거나 완전히 고려 하지 않 은 부분 이 있다 면 아낌없이 가르침 을 주시 기 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
WebView2를 Visual Studio 2017 Express에서 사용할 수 있을 때까지Evergreen .Net Framework SDK 4.8 VisualStudio2017에서 NuGet을 사용하기 때문에 패키지 관리 방법을 packages.config 대신 PackageReference를 사용해야...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.