实时通讯—在线等待(100分)

huoleifeng 2002-06-29 01:33:13
我想做一个实时通讯软件,简单实现一台微机对另一台的控制(如黑屏),实际就是两台微机实现通话,在知道和不知道IP地址的情况下服务器端和客户端的程序应该分别怎么写呢?


如果不方便写,请E-mail: huoleifeng@sohu.com
...全文
23 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
huoleifeng 2002-06-29
  • 打赏
  • 举报
回复
不晚
luken 2002-06-29
  • 打赏
  • 举报
回复
我也来晚了
hezhongxia 2002-06-29
  • 打赏
  • 举报
回复
如果要原程序的话,改天吧,令天我要下线了。
griefforme 2002-06-29
  • 打赏
  • 举报
回复
唉!又来晚了。。。

不知还有没有分可拿………………
hezhongxia 2002-06-29
  • 打赏
  • 举报
回复
类似这个原程序我有,要吧!我的Email有问题,那个兄台也不能收到,如果你要的话请现在用QQ联系我:28711743
CCL 2002-06-29
  • 打赏
  • 举报
回复
同意hezhongxia(老厶)的回复
hezhongxia 2002-06-29
  • 打赏
  • 举报
回复
(这个程序是我给另一位老兄写的,他主要是用于发送文件,你这个问题也是一样,你觖一下就行了。)
注1: 最好定义一个全局字符变量 strTXT,Lenx as Long型变量
strTXT="FileSize" 接收文件大小字节(此变量先设置)
strTXT="File" 接收文件


private sub form_load()
'服务器端
Winsock1.Close
Winsock1.LocalPort = 3016 '端口号
Winsock1.Listen ,监听网络
end sub

Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long)
'被连接时的事件
Winsock1.Close
Winsock1.Accept requestID '连接
Winsock1.SendData "FileLenx" '发送出消息
End Sub


'以下这个事件是Winsock1收到数据时发生的
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
'(这里就是你所要的:比如说,这里收到字符"File"时,你就在这里写黑屏的代码.)
dim lenx as long
select case strtxt
case "FileSize" '接收文件大小
Winsock1.GetData lenx
Winsock1.SendData "File"
strTXT="File"
Case "File"
On Error GoTo errx
ReDim bytx(Lenx) As Byte
If bytesTotal >= Lenx Then
Winsock1.PeekData bytx, vbArray + vbByte, Lenx
Dim l As Long
l = FreeFile
Open "c:\Excl.xls" For Binary Access Write As #l
Put #1, , bytx
Close #l
msgbox "收到文件 C:\Excl.xls"
ReDim bytx(0)
End If
end select
End Sub


'以下是发送端(全局变量同上)
'(这里就是客户端)
Private sub command1_click()
Winsock1.Close
Winsock1.RemoteHost ="10.10.1.1" '服务器的IP
Winsock1.RemotePort = 3016 '服务器的端口号
Winsock1.Connect '连接服务器
end sub

Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
'(这里就不要了,但是你也可以黑屏代码后发送一个字符来(如上面的"File"),来确认黑屏是否。
Dim i As Long
Winsock1.GetData strTXT
Select Case strTXT
Case "FileLenx"
lenx=filelen("c:\book1.xls")
Winsock1.SendData lenx
Case "File"
ReDim bytt(Lenx) As Byte
Dim l As Long
l = FreeFile
Open "c:\book1.xls" For Binary Access Read As #l
Get #l, , bytt
Close #l
Winsock1.SendData bytt
ReDim bytt(0)
ens select
End Sub

这里我就不重复了,你可以自慢慢来读这段代码,Winsock的工作方式就是这样了,你可以改一改就可以从远程偷文件了。
CCL 2002-06-29
  • 打赏
  • 举报
回复
感谢支持Visual Basic语言。

完全可以做成对等的程序。大概的结构很简单,窗口上至少要有两个winsock控件(据我的经验,用两个比较稳定且容易编程),设为使用tcp/ip协议,然后按照msdn上的介绍将一个控件写成接收端再将另一个写成发送端(可以用局域网内同域或同工作组内机器名代替ip地址),接下来稍微初始化一下就可以通讯了。至于发送特殊命令,比如黑屏、关机等,使用一些特殊符号或超级生冷僻的汉字作标识符,最好前后使用不同的,比如chr(13) + "熄了它让我熄了它!" + chr(10)这样的字符串,比较不容易发生误指令。

如果还有什么问题请发邮件至:ccl13@netease.com
(请各位遵守网络道德不要发送垃圾邮件,谢谢合作)
landog 2002-06-29
  • 打赏
  • 举报
回复
我认为可能写成对等的
像winpopup
但是必须双方都运行才能奏效呀!
huoleifeng 2002-06-29
  • 打赏
  • 举报
回复
不行
中联-ZXH 2002-06-29
  • 打赏
  • 举报
回复
能不能不要客户端,像winpopup一样
huoleifeng 2002-06-29
  • 打赏
  • 举报
回复
能详细点吗?
Laney 2002-06-29
  • 打赏
  • 举报
回复
使用Winsock的senddata方法和dataarrival事
huoleifeng 2002-06-29
  • 打赏
  • 举报
回复
那么通讯的代码应该怎么写呢?
浮云 2002-06-29
  • 打赏
  • 举报
回复
简单的思路:
你可以通过Winsock控件实现连接,发送的字符串按一定的格式,如"%黑屏%"
在客户进行判断,然后相应操作
中山中盈科技 2002-06-29
  • 打赏
  • 举报
回复
关注!

7,764

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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