socket 서버 브라우저와 서버 클라이언트 실례
12131 단어 socket
//본 컴퓨터의 loopback 네트워크 주소, 즉 127.0.0.1 IPADdress address = IPADdress.Loopback; IPEndPoint endPoint = new IPEndPoint(address, 49152); Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); socket.Bind(endPoint); socket.Listen(10); Console.WriteLine("감청 시작, 포트 번호; {0}.",endPoint.Port); while (true) { Socket client = socket.Accept(); Console.WriteLine(client.RemoteEndPoint); byte[] buffer = new byte[4096]; int length = client.Receive(buffer, 4096, SocketFlags.None); System.Text.Encoding utf8 = System.Text.Encoding.UTF8; string requestString = utf8.GetString(buffer, 0, length); Console.WriteLine(requestString); string statusLine = "HTTP/1.1 200 OK\r"; byte[] statusLineBytes = utf8.GetBytes(statusLine); string responseBody = "
마지막으로 브라우저 주소 표시줄에:http://localhost:49152
2. 서버 클라이언트
서버:
class Program
{
private static byte[] result = new byte[1024];
private static int myProt = 8885; //
static Socket serverSocket;
static void Main(string[] args)
{
// IP
IPAddress ip = IPAddress.Parse("127.0.0.1");
serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
serverSocket.Bind(new IPEndPoint(ip, myProt)); // IP :
serverSocket.Listen(10); // 10
Console.WriteLine(" {0} ", serverSocket.LocalEndPoint.ToString());
// Clientsoket
Thread myThread = new Thread(ListenClientConnect);
myThread.Start();
Console.ReadLine();
}
/// <summary>
///
/// </summary>
private static void ListenClientConnect()
{
while (true)
{
Socket clientSocket = serverSocket.Accept();
clientSocket.Send(Encoding.ASCII.GetBytes("Server Say Hello"));
Thread receiveThread = new Thread(ReceiveMessage);
receiveThread.Start(clientSocket);
}
}
/// <summary>
///
/// </summary>
/// <param name="clientSocket"></param>
private static void ReceiveMessage(object clientSocket)
{
Socket myClientSocket = (Socket)clientSocket;
while (true)
{
try
{
// clientSocket
int receiveNumber = myClientSocket.Receive(result);
Console.WriteLine(" {0} {1}", myClientSocket.RemoteEndPoint.ToString(), Encoding.ASCII.GetString(result, 0, receiveNumber));
}
catch(Exception ex)
{
Console.WriteLine(ex.Message);
myClientSocket.Shutdown(SocketShutdown.Both);
myClientSocket.Close();
break;
}
}
}
}
클라이언트:
class Program
{
private static byte[] result = new byte[1024];
static void Main(string[] args)
{
// IP
IPAddress ip = IPAddress.Parse("127.0.0.1");
Socket clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
try
{
clientSocket.Connect(new IPEndPoint(ip, 8885)); // IP
Console.WriteLine(" ");
}
catch
{
Console.WriteLine(" , !");
return;
}
// clientSocket
int receiveLength = clientSocket.Receive(result);
Console.WriteLine(" :{0}",Encoding.ASCII.GetString(result,0,receiveLength));
// clientSocket
for (int i = 0; i < 10; i++)
{
try
{
Thread.Sleep(1000); // 1
string sendMessage = "client send Message Hellp" + DateTime.Now;
clientSocket.Send(Encoding.ASCII.GetBytes(sendMessage));
Console.WriteLine(" :{0}" + sendMessage);
}
catch
{
clientSocket.Shutdown(SocketShutdown.Both);
clientSocket.Close();
break;
}
}
Console.WriteLine(" , ");
Console.ReadLine();
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
React 구성 요소에서 소켓 이벤트 리스너가 여러 번 실행됩니다.기본적이지만 종종 간과되는 사이드 프로젝트를 하면서 배운 것이 있습니다. 이 프로젝트에는 단순히 두 가지 주요 부분이 포함되어 있습니다. 프런트 엔드: 반응 및 재료 UI 백엔드: Express, Typescript...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.