[socket] c# server , as3 client


c# code (partial)
Created with colorer-take5 library. Type 'csharp' /* * SharpDevelop으로 작성��었습니다. * 사용자: jjongun * 날짜: 2010-02-09 * 시간: ��전 9:05 * * */ using System; using System.Collections.Generic; using System.Drawing; using System.Windows.Forms; using System.Threading; using System.Net.Sockets; using System.Net; using System.IO; using System.Diagnostics; using System.Timers; namespace testServer3 { /// <summary> /// Description of MainForm. /// </summary> public partial class MainForm : Form { public MainForm() { // // The InitializeComponent() call is required for Windows Forms designer support. // InitializeComponent(); // // TODO: Add constructor code after the InitializeComponent() call. // } private delegate void serverMrgDele(string str); private System.Timers.Timer catchClient; private System.Timers.Timer readTimer; private IPAddress address; private Int32 port; private TcpListener server; private serverMrgDele mrg; private TcpClient client; private StreamWriter writer; private StreamReader reader; private NetworkStream stream; private Thread serverThread; private Thread checkThread; private Thread readThread; void ConnectBtClick(object sender, EventArgs e) { if(ipTx.Text == "") ipTx.Text = "127.0.0.1"; if(portTx.Text == "") portTx.Text = "1000"; try{ address = IPAddress.Parse(ipTx.Text); port = Convert.ToInt32(portTx.Text); }catch(FormatException fe) { Trace.WriteLine(fe); ipTx.Clear(); portTx.Clear(); } mrg = new serverMrgDele(traceBox.AppendText); Thread serverThread = new Thread( new ThreadStart(startServer)); readThread = new Thread(new ThreadStart(readClinet)); checkThread = new Thread(new ThreadStart(checkClinetStatus)); serverThread.Start(); } //thread1 private void startServer() { server = new TcpListener(address , port); Invoke(mrg , "start" + Environment.NewLine); server.Start(); client = server.AcceptTcpClient(); Invoke(mrg , "client connect" + Environment.NewLine); stream = client.GetStream(); writer = new StreamWriter(stream); readThread.Start(); checkThread.Start(); } //thrad2 private void readClinet() { reader = new StreamReader(stream); readTimer = new System.Timers.Timer(); readTimer.Elapsed+= new ElapsedEventHandler(readTimer_Elapsed); readTimer.Interval=100; readTimer.Start(); } void readTimer_Elapsed(object sender, ElapsedEventArgs e) { Invoke(mrg , reader.ReadLine() + Environment.NewLine); } //thread3 private void checkClinetStatus() { catchClient = new System.Timers.Timer(); catchClient.Elapsed += new ElapsedEventHandler(catchClient_Elapsed); catchClient.Interval = 100; catchClient.Start(); } void catchClient_Elapsed(object sender, ElapsedEventArgs e) { //???? //Trace.WriteLine(client.Connected); } private int checknum = 0; void SendBtClick(object sender, EventArgs e) { checknum ++ ; if(sendTx.Text =="") sendTx.Text = "mrg form C#" + checknum.ToString(); writer.WriteLine(sendTx.Text + "\n"); writer.Flush(); } void DisconnectBtClick(object sender, EventArgs e) { try{ client.Close(); }catch( Exception ex){} writer.Close(); reader.Close(); server.Stop(); } } }AS3 code (flex4)
<?xml version="1.0" encoding="utf-8"?> <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/halo" minWidth="1024" minHeight="768" width="299" height="522"> <fx:Script> <![CDATA[ private var client:Socket; protected function connetBt_clickHandler(event:MouseEvent):void { client = new Socket; if(ipTx.text == "") ipTx.text = "127.0.0.1"; if(portTx.text == "") portTx.text = "1000"; client.connect(ipTx.text , int(portTx.text)); client.addEventListener(Event.CONNECT , serverConnect); client.addEventListener(ProgressEvent.SOCKET_DATA , onData); client.addEventListener(Event.CLOSE , disconnect); // TODO Auto-generated method stub } private function serverConnect(e:Event):void { traceBox.appendText("connect server" + "\n"); } private function onData(e:ProgressEvent):void { trace("data"); traceBox.appendText("c#Mrg : " + client.readUTFBytes(client.bytesAvailable) + "\n"); } private function disconnect(e:Event):void { traceBox.appendText("close server" +"\n"); client.close(); } protected function sendBt_clickHandler(event:MouseEvent):void { if(sendTx.text == "") sendTx.text = "mrg from As3"; client.writeUTFBytes(sendTx.text + "\n"); client.flush(); } ]]> </fx:Script> <fx:Declarations> <!-- Place non-visual elements (e.g., services, value objects) here --> </fx:Declarations> <s:TextArea x="10" y="89" width="279" height="276" id="traceBox"/> <s:TextArea x="11" y="390" width="279" height="26" id="sendTx"/> <s:TextArea x="10" y="10" height="24" width="149" id="ipTx"/> <s:TextArea x="167" y="10" height="24" width="122" id="portTx"/> <s:Button x="10" y="42" label="connect" width="279" id="connetBt" click="connetBt_clickHandler(event)"/> <s:Button x="10" y="474" label="disconnect" width="279" id="disconnectBt"/> <s:Button x="10" y="425" label="sendMrg" width="279" id="sendBt" click="sendBt_clickHandler(event)"/> </s:Application>
c#에서는 stream을 readLine 으로 받는다. 따라서
as3 에도 string 값을 " somstring " + " \n" 으로 줄을 넘겨줘야 c#에서 read 할수 있다.
'C#' 카테고리의 다른 글
[C# FileDialog] 간단한 Open / Save 파일 다이얼로그 (52) | 2010.12.04 |
---|---|
[C# Thread]종료시 프로세스 죽이기 (167) | 2010.12.04 |
[socket] c# server , as3 client (143) | 2010.12.04 |
[BeginInvoke] Delegate 로 스레드에 매개변수 전달하기 (49) | 2010.12.04 |
[Windows form Invoke] System.Timers.Timer 로 windows form 접근하기 (54) | 2010.12.04 |
[Timer] System.Timers.Timer ≠ System.Windows.Forms.Timer (95) | 2010.12.04 |
C#
2010. 12. 4. 00:14
댓글을 달아 주세요
이용약관위배로 관리자 삭제된 댓글입니다.
이용약관위배로 관리자 삭제된 댓글입니다.
이용약관위배로 관리자 삭제된 댓글입니다.
이용약관위배로 관리자 삭제된 댓글입니다.
이용약관위배로 관리자 삭제된 댓글입니다.
이용약관위배로 관리자 삭제된 댓글입니다.
이용약관위배로 관리자 삭제된 댓글입니다.
이용약관위배로 관리자 삭제된 댓글입니다.
이용약관위배로 관리자 삭제된 댓글입니다.
이용약관위배로 관리자 삭제된 댓글입니다.
이용약관위배로 관리자 삭제된 댓글입니다.
이용약관위배로 관리자 삭제된 댓글입니다.
이용약관위배로 관리자 삭제된 댓글입니다.
이용약관위배로 관리자 삭제된 댓글입니다.
이용약관위배로 관리자 삭제된 댓글입니다.
이용약관위배로 관리자 삭제된 댓글입니다.
이용약관위배로 관리자 삭제된 댓글입니다.
이용약관위배로 관리자 삭제된 댓글입니다.
이용약관위배로 관리자 삭제된 댓글입니다.
그분大话西游服务端凡人修真服务端大话西游服务端页游服务端问道服务端
跑跑卡丁车服务端英雄远征服务端幻灵游侠私服务端洪荒神话私服务端
完美世界服务端烈焰服务端洛汗服务端新魔界服务端绝对女神私服务端
魔兽私服开区一条龙服务-
传奇私服开传奇一条龙服务-
传奇广告代理-
IDC服务器以及空间租用-
魔域开区sf一条龙开区服务-
客服咨询QQ(企鹅扣扣)1325876192
Email:1325876192@qq.com
商业版本免费开放下载
紫川科技最新毁灭天下1.85狂雷独家合击热血复古三职业新装传奇服务端
紫川科技20星大极品良装+80麒麟锻造中变传奇服务端
紫川科技独家轻变1.89奥妙转生神龙锻造珍珑元素版传奇服务端
紫川科技独家九转1.85四皇冠加倍装备特戒龙卫뉴로