/ Server Socket
// NameSpace 선언
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
namespace ServerSideSocket
{
class ServerClass
{
public static Socket Server , Client;
public static byte[] getByte = new byte[1024];
public static byte[] setByte = new byte[1024];
public const int sPort = 5000;
[STAThread]
static void Main(string[] args)
{
string stringbyte = null;
IPAddress serverIP = IPAddress.Parse("127.0.0.1");
IPEndPoint serverEndPoint = new IPEndPoint(serverIP,sPort);
try
{
Server= new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
Server.Bind(serverEndPoint);
Server.Listen(10);
Console.WriteLine("-----------------------------------------------------");
Console.WriteLine(" 클라이언트의 연결을 기다립니다........ ");
Console.WriteLine("-----------------------------------------------------");
Client = Server.Accept();
if(Client.Connected)
{
while(true)
{
Client.Receive(getByte,0,getByte.Length,SocketFlags.None);
stringbyte = Encoding.UTF7.GetString(getByte);
if (stringbyte != String.Empty)
{
int getValueLength = 0;
getValueLength = byteArrayDefrag(getByte);
stringbyte = Encoding.UTF7.GetString(getByte,0,getValueLength+1);
Console.WriteLine("수신데이터:{0} | 길이:{1}",stringbyte,getValueLength+1);
setByte = Encoding.UTF7.GetBytes(stringbyte);
Client.Send(setByte,0,setByte.Length,SocketFlags.None);
}
getByte = new byte[1024];
setByte = new byte[1024];
}
}
}
catch(System.Net.Sockets.SocketException socketEx)
{
Console.WriteLine("[Error]:{0}", socketEx.Message);
}
catch(System.Exception commonEx)
{
Console.WriteLine("[Error]:{0}", commonEx.Message);
}
finally
{
Server.Close();
Client.Close();
}
}
public static int byteArrayDefrag(byte[] sData)
{
int endLength = 0;
for(int i = 0; i < sData.Length; i++)
{
if((byte)sData[i] != (byte)0)
{
endLength = i;
}
}
return endLength;
}
}
}
// Client Socket
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
namespace ClientSideSocket
{
class ClientClass
{
public static Socket socket;
public static byte[] getbyte = new byte[1024];
public static byte[] setbyte = new byte[1024];
public const int sPort = 5000;
[STAThread]
static void Main(string[] args)
{
string sendstring = null;
string getstring = null;
IPAddress serverIP = IPAddress.Parse("127.0.0.1");
IPEndPoint serverEndPoint = new IPEndPoint(serverIP,sPort);
socket = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
Console.WriteLine("-----------------------------------------------------");
Console.WriteLine(" 서버로 접속을 시작합니다. [엔터를 입력하세요] ");
Console.WriteLine("-----------------------------------------------------");
Console.ReadLine();
socket.Connect(serverEndPoint);
if (socket.Connected)
{
Console.WriteLine(">> 정상적으로 연결 되었습니다.(전송한 데이터를 입력해주세요)");
}
while(true)
{
Console.Write(">>");
sendstring = Console.ReadLine();
if(sendstring != String.Empty)
{
int getValueLength = 0;
setbyte = Encoding.UTF7.GetBytes(sendstring);
socket.Send(setbyte,0,setbyte.Length,SocketFlags.None);
Console.WriteLine("송신 데이터 : {0} | 길이{1}", sendstring, setbyte.Length);
socket.Receive(getbyte,0,getbyte.Length,SocketFlags.None);
getValueLength = byteArrayDefrag(getbyte);
getstring = Encoding.UTF7.GetString(getbyte,0,getValueLength+1);
Console.WriteLine(">>수신된 데이터 :{0} | 길이{1}" , getstring , getValueLength+1);
}
getbyte = new byte[1024];
}
}
public static int byteArrayDefrag(byte[] sData)
{
int endLength = 0;
for(int i = 0; i < sData.Length; i++)
{
if((byte)sData[i] != (byte)0)
{
endLength = i;
}
}
return endLength;
}
}
}