(agin)c#中如何实现两个程序之间的通信?

wangarsenal 2005-12-08 02:41:16
麻烦各位,由于从来没写过通信的程序,烦各位能不能说的详细点. 我用socket试了试,好象没有清晰的思路.
...全文
129 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
jailu 2005-12-08
  • 打赏
  • 举报
回复
用TCP或是UDP吧,基于Socket,用起来方便~~
coley 2005-12-08
  • 打赏
  • 举报
回复

/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
{
Application.Run(new ThreadPoolSer());
}

void start()
{
int recv;
byte[] data=new byte[1024];
try
{
server=new TcpListener(9955);
server.Start();
}
catch(SocketException)
{
MessageBox.Show("服务器无法启动");
return;
}
client=server.AcceptTcpClient();
ns=client.GetStream();
//Message 1
string msg1="wel come my server";
data=Encoding.GetEncoding("gb2312").GetBytes(msg1);
ns.Write(data,0,data.Length);
ns.Flush();

while(true)
{
data=new byte[1024];
recv=ns.Read(data,0,data.Length);
if(recv==0)
break;
tb_recv.Text+="recv:"+Encoding.GetEncoding("gb2312").GetString(data,0,recv)+System.Environment.NewLine;
}

}

private void bt_start_Click(object sender, System.EventArgs e)
{
Thread tr=new Thread(new ThreadStart(start));
tr.Start();
}

private void bt_send_Click(object sender, System.EventArgs e)
{
if(ns!=null)
{

byte[] data=new byte[1024];
string sendstring=tb_sendstr.Text;
data=Encoding.GetEncoding("gb2312").GetBytes(sendstring);
ns.Write(data,0,data.Length);
ns.Flush();
tb_recv.Text+="send:"+sendstring+System.Environment.NewLine;
}

}


}
}

---------------------------------------------------------
private void bt_send_Click(object sender, System.EventArgs e)
{
if(ns!=null)
{
byte[] data=new byte[1024];
string sendstr=tb_sendstr.Text;
data=Encoding.GetEncoding("gb2312").GetBytes(sendstr);
ns.Write(data,0,data.Length);
ns.Flush();
textBox1.Text+="Send::"+sendstr+System.Environment.NewLine;
}
}

private void bt_connect_Click(object sender, System.EventArgs e)
{
Thread tr=new Thread(new ThreadStart(start));
tr.Start();
}

private void button1_Click(object sender, System.EventArgs e)
{
ns.Close();
client.Close();
}
}
wangarsenal 2005-12-08
  • 打赏
  • 举报
回复
就是不知道一种方法的具体过程,望高手指点.
xianbin 2005-12-08
  • 打赏
  • 举报
回复
用Remoting也是不错的
wangarsenal 2005-12-08
  • 打赏
  • 举报
回复
远程的,烦详细说说,如何建连接如何传数据等
coley 2005-12-08
  • 打赏
  • 举报
回复
本地的还是远程的?
本地的有domain域可以考虑,远程的就用socket
基于AT89C51单片机的抢答器设计 硬件设计: 项目要求: 基于AT89C51单片机设计制作一个抢答器,晶振采用12MHZ,具体设计要求如下: 1.设计一个智力竞赛抢答器,可同时供8名选手参加比赛,编号为1、2、3、4、5、6、7、8,各用一个按钮。 2.给节目主持人设置一个控制开关,用来控制系统的清零和抢答开始 3.抢答器具有所锁存功能、显示功能和声音提示功能。抢答开始后若选手按动抢答按钮,编号立即锁存,并在LED数码管上显示选手编号,同时亮灯伴随声音提示。此外要封锁输入电路,禁止其他选手抢答,最先抢答选手的编号一直保持到主持人将系统请0. 框图设计: 基于AT89C51单片机抢答器由控制核心AT89C51单片机、复位电路、电源电路、选手按键、主持人按键、声音提示和数码显示等部分构成,系统框图如图示 电源电路AT89C52单片机声音提示数码显示复位电路选手按键主持人按键 电源电路 AT89C52 单片机 声音提示 数码显示 复位电路 选手按键 主持人按键 基于AT89C51单片机的抢答器设计全文共8页,当前为第1页。 基于AT89C51单片机的抢答器设计全文共8页,当前为第1页。 基于AT89C51单片机抢答器系统框图 本项目需要通过学习和查阅资料,掌握和了解如下知识: +5V电源原理及设计 单片机复位电路工作原理及设计 单片机晶振电路工作原理及设计 按键电路设计 蜂鸣器驱动电路设计 数码管特性及使用 AT89C51单片机引脚 单片机汇编语言及程序设计 电路原理图: 基于AT89C51单片机的抢答器设计全文共8页,当前为第2页。其工作原理为:电源电路为单片机以及其他模块提供标准5V电源。晶振模块为单片机提供时钟标准,使系统各部分协调工作。复位电路模块为单片机系统提供复位功能。单片机作为主控制器,根据输入信号对系统进行相应的控制。选手按下相应的键,蜂鸣器发出提示音,直到按键释放。数码管显示最先按下选手的编号。选手回答完毕,主持人按下准备按钮,数码管清零,蜂鸣器停止发声,可以进入下一题的抢答。 基于AT89C51单片机的抢答器设计全文共8页,当前为第2页。 基于AT89C51的单片机抢答器元件清单如下: 序号 元件名称 规格 数量 用途 1 51单片机 AT89C51 1个 控制核心 2 晶振 12M立式 1个 晶振电路 3 集成电路 74LS245(8路总线接收/发送器) 1个 驱动 4 八段数码管 一位共阴极 1个 显示电路 5 三极管 9015 1个 蜂鸣器机器驱动电路 6 起振电容 30pF瓷片电容 2个 晶振电路 7 复位电容 10uF/10V 1个 复位电路 8 复位电阻 10K欧 1个 复位电路 限流电阻 500欧 1个 限流电路 9 喇叭 8欧/05W 1个 蜂鸣器及其驱动电路 10 按键 1个 主持人按键 按键 8个 选手按键 11 电源 5V/05A 1个 提供+5V 软件设计: 上电复位后数码管清零,P2.0置高电平,蜂鸣器不发声,循环扫描P3口,看是否有按键按下,如果有按键按下,则转入判断是哪个选手按下按键,并在数码管上显示选手号;P2.0置低电平,蜂鸣器发生,主持人按键按下,系统重新进入主程序继续进行下一轮抢答。程序流程图如下 基于AT89C51单片机的抢答器设计全文共8页,当前为第3页。 基于AT89C51单片机的抢答器设计全文共8页,当前为第3页。 开始初始化有选手按键判断选手显示选手号蜂鸣器发生主持人按键按下程序流程图: 开始 初始化 有选手按键 判断选手 显示选手号 蜂鸣器发生 主持人按键按下 小结: 程序调试参考了好多资料,也请教了同学,最后编程问题都得到了解决 在Protus画图失败,以至于不能仿真出来结果 理论联系实际,培养自学能力,和动手能力,学会了怎么更好的处理知识和实践相结合的问题 为以后有关单片机只是的学习积累宝贵经验 附: 源程序代码如下: ORG 0000H JMP BEGIN TABLE: ;共阴极数码管显示代码表 基于AT89C51单片机的抢答器设计全文共8页,当前为第4页。 DB 3FH,06H,5BH,4FH,66H, ;01234 基于AT89C51单片机的抢答器设计全文共8页,当前为第4页。 DB 6DH,7DH,07H,7FH ;6789 DELAY:MOV R5,#20 LOOP4:MOV R6,#50H LOOP5:MOV R7,#100H ;延时20*20ms DJNZ R7,$ DJNZ R6,LOOP5 DJNZ R5,LOOP4 RET BEGIN:MOV P2,#0FFH ;P2口置高电平,准备接收信号 MOV R4,#0 MOV A,R4 ;R4位 标志值送A寄存器 AGIN:MOV DPTR,#TABLE MOVC A,@A+DPTR MO

110,561

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧