Develop
2013.04.23 17:33
[c#] 간단한 소켓통신 예제..
조회 수 27798 댓글 0
// 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;
}
}
}| 번호 | 분류 | 제목 | 글쓴이 | 날짜 | 조회 수 |
|---|---|---|---|---|---|
| 841 | Develop | [php] substr() 한글 자를 때 깨짐 방지 | hooni | 2014.01.09 | 21823 |
| 840 | System/OS |
[linux] iconv를 이용하여 euc-kr 문서를 utf-8로 대량으로 변환하기
|
hooni | 2014.01.09 | 13561 |
| 839 | Develop | [ios] UIButton multi-line iOS7 | hooni | 2014.01.09 | 13704 |
| 838 | Etc | iOS 에서 쓸만한 오프라인 구글지도 찾기 | hooni | 2014.01.06 | 17424 |
| 837 | Develop |
[js] AngularJS를 소개합니다.
|
hooni | 2014.01.06 | 13949 |
| 836 | Etc | [용어] POC, Pilot, BMT에 대한 IT 업계에서 통용되는 의미 | hooni | 2014.01.02 | 43414 |
| 835 | Develop | [php] 하루 전 날짜 쉽게 구하기. | hooni | 2013.12.25 | 13825 |
| 834 | Develop | [php] GregorianToJD(), JDToGregorian() 함수 내용 | hooni | 2013.12.25 | 11817 |
| 833 | System/OS | [linux] root 전환시 패스워드 없이 su 사용하기 | hooni | 2013.12.22 | 13758 |
| 832 | System/OS | [linux] CentOS 터미널 언어 설정(한글/영어) | hooni | 2013.12.22 | 19796 |
| 831 | Develop | [js] jQuery plugin 요약 | hooni | 2013.12.20 | 11737 |
| 830 | Develop | [css] z-index에 설정할 수 있는 최대값? | hooni | 2013.12.20 | 16123 |