zoukankan
html css js c++ java
Flex Socket 与 C# 通信
Flex
<?
xml version="1.0" encoding="utf-8"
?>
<
mx:Application
xmlns:mx
="http://www.adobe.com/2006/mxml"
layout
="absolute"
>
<
mx:Script
>
<![CDATA[
import mx.controls.Alert;
/////////////////////////////////
//private member
private var xmlsocket:XMLSocket= new XMLSocket();
private var alert:Alert;
private var tmpStr:String;
/////////////////////////////////
//连接服务器
private function ConncetServer():void
{
xmlsocket.addEventListener(DataEvent.DATA,OnRecived);
xmlsocket.addEventListener(Event.CONNECT , onConnected);
this.xmlsocket.connect(this.txtIP.text,int(this.txtPort.text));
}
private function onConnected(evt:Event):void
{
xmlsocket.send(this.txtTrueName.text+" has connected");
this.txtContent.text=this.txtContent.text+"连接成功\n";
}
//发送信息
private function Send():void
{
this.xmlsocket.send(this.txtTrueName.text+"|"+this.txtSendContent.text+"\n");
}
//接收数据
private function OnRecived(event:DataEvent):void
{
trace("等待读取数据信息");
tmpStr = event.text;
//alert=Alert.show("收到新消息","消息");
this.txtContent.text=this.txtContent.text+"\n"+tmpStr;
}
]]>
</
mx:Script
>
<
mx:Panel
layout
="absolute"
right
="0"
left
="0"
top
="0"
bottom
="0"
horizontalAlign
="left"
>
<
mx:TextInput
cornerRadius
="20"
themeColor
="#0D79BE"
borderColor
="#070D04"
borderStyle
="inset"
borderThickness
="1"
id
="txtIP"
text
="192.168.1.55"
left
="88"
top
="23"
/>
<
mx:TextInput
cornerRadius
="20"
themeColor
="#0D79BE"
borderColor
="#070D04"
borderStyle
="inset"
borderThickness
="1"
width
="94"
id
="txtPort"
text
="9992"
left
="293"
top
="23"
/>
<
mx:TextInput
cornerRadius
="20"
themeColor
="#0D79BE"
borderColor
="#070D04"
borderStyle
="inset"
borderThickness
="1"
width
="94"
id
="txtTrueName"
text
="小虎"
left
="432"
top
="23"
/>
<
mx:Label
text
="服务器IP"
fontSize
="12"
left
="15"
top
="23"
/>
<
mx:Label
text
="姓名"
fontSize
="12"
left
="395"
top
="23"
/>
<
mx:Label
text
="端口"
fontSize
="12"
left
="256"
top
="23"
/>
<
mx:Button
label
="登录"
fontSize
="12"
id
="btnLogin"
left
="552"
top
="23"
click
="ConncetServer()"
/>
<
mx:Button
label
="发送"
fontSize
="12"
id
="btnSend"
left
="552"
top
="68"
click
="Send();"
/>
<
mx:TextInput
borderColor
="#04010C"
backgroundColor
="#EEDBFC"
width
="516"
borderStyle
="inset"
cornerRadius
="20"
alpha
="1.0"
id
="txtSendContent"
left
="10"
top
="70"
/>
<
mx:TextArea
borderColor
="#010A10"
id
="txtContent"
left
="10"
top
="110"
right
="10"
bottom
="10"
backgroundColor
="#DEEEF3"
cornerRadius
="12"
/>
</
mx:Panel
>
</
mx:Application
>
C#
using
System;
using
System.Collections.Generic;
using
System.ComponentModel;
using
System.Data;
using
System.Drawing;
using
System.Text;
using
System.Windows.Forms;
using
System.Net;
using
System.Net.Sockets;
using
System.Threading;
namespace
Server
{
public
partial
class
Form1 : Form
{
private
bool
ServiceStartFlag
=
false
;
private
Socket m_Socket;
NetworkStream networkStream;
Thread m_Thread;
public
delegate
void
HelpHandler(
string
str);
public
Form1()
{
InitializeComponent();
btnStart.Enabled
=
true
;
btnStop.Enabled
=
false
;
}
private
void
btnStart_Click(
object
sender, EventArgs e)
{
int
Port
=
int
.Parse(txtPort.Text);
m_Socket
=
new
Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
IPAddress LocalServerIP
=
GetIPAddress();
IPEndPoint LocalIPEndPoint
=
new
IPEndPoint(LocalServerIP, Port);
m_Socket.Bind(LocalIPEndPoint);
m_Socket.Listen(
600
);
m_Thread
=
new
Thread(
new
ThreadStart(AcceptClient));
m_Thread.IsBackground
=
true
;
m_Thread.Start();
}
private
void
AcceptClient()
{
ServiceStartFlag
=
true
;
while
(ServiceStartFlag)
{
try
{
Socket newSocket
=
m_Socket.Accept();
string
onemessge
=
"
<cross-domain-policy><allow-access-from domain=\
""
+
"
*
"
+
"
\
"
to-ports=\
""
+ txtPort.Text +
"
\
"
/></cross-domain-policy>\0
"
;
byte
[] tmpBytes
=
Encoding.UTF8.GetBytes(onemessge);
newSocket.Send(tmpBytes);
Thread newThread
=
new
Thread(
new
ParameterizedThreadStart(ReadMsg));
newThread.IsBackground
=
true
;
object
obj
=
newSocket;
newThread.Start(obj);
}
catch
(SocketException ex)
{
}
}
}
private
void
ReadMsg(
object
obj)
{
Socket socket
=
(Socket)obj;
HelpHandler rHandler
=
new
HelpHandler(ReceivedMsg);
byte
[] byteMessage
=
null
; ;
while
(ServiceStartFlag)
{
try
{
if
(socket.Connected)
{
byteMessage
=
new
byte
[
1000
];
int
len
=
socket.Receive(byteMessage);
if
(len
>
0
)
{
string
sTime
=
DateTime.Now.ToShortTimeString();
string
msg
=
sTime
+
"
:
"
+
"
Message from:
"
;
msg
+=
socket.RemoteEndPoint.ToString()
+
Encoding.UTF8.GetString(byteMessage);
BeginInvoke(rHandler,
new
object
[]
{ msg }
);
byteMessage
=
null
;
byte
[] tmpBytes
=
Encoding.UTF8.GetBytes(
"
Sended Sucessed!\0
"
);
socket.Send(tmpBytes);
}
}
}
catch
(SocketException ex)
{
BeginInvoke(rHandler,
new
object
[]
{ ex.ToString() }
);
}
}
}
private
void
ReceivedMsg(
string
str)
{
this
.listBox1.Items.Add(str);
}
private
void
btnStop_Click(
object
sender, EventArgs e)
{
}
private
IPAddress GetIPAddress()
{
IPHostEntry ieh
=
Dns.GetHostByName(Dns.GetHostName());
return
ieh.AddressList[
0
];
}
}
}
查看全文
相关阅读:
GTD时间管理(1)---捕获搜集
ios面试总结-
Swift入门篇-结构体
Swift入门篇-闭包和函数
swift入门篇-函数
Swift入门篇-集合
Swift入门篇-循环语句
Swift入门篇-基本类型(3)
Swift入门篇-基本类型(2)
Swift入门篇-基本类型(1)
原文地址:https://www.cnblogs.com/skyblue/p/1523507.html
最新文章
树莓派也跑Docker和.NET Core
浅析C#中单点登录的原理和使用
关于DbContext能不能单次请求内唯一?DbContex需不需要主动释放?欢迎各路大侠来“参战”!
《HiBlogs》重写笔记[1]--从DbContext到依赖注入再到自动注入
Linux学习(1)-常用快捷键、文件管理和查询
ASP.NET Core 快速入门(环境篇)
权限管理学习 一、ASP.NET Forms身份认证
文件下载之断点续传(客户端与服务端的实现)
前端架构设计3:测试核心
前端架构设计2:流程核心
热门文章
前端架构设计1:代码核心
vue 实站技巧总结
基于vue-cli项目添加服务端渲染
vue.js开发SPA常见问题及解决方法
vue-worker的介绍和使用
vue项目eslint环境配置与vscode配置eslint
微信小程序开发填坑
使用vw做移动端页面的适配
GTD时间管理(3)---行动容器分析理论法
GTD时间管理(2)---管理收集箱
Copyright © 2011-2022 走看看