小D初学VB,今天用WINSOCK控件编写了一个局域网的CHAT小程序!
但是运行过程出现问题一下问题:
1:发送信息时出错,提示“运行时错误‘10054’,连接由远程端重新设置!”
2:按F1没有出现README.TXT帮助文件!
希望各位高人多多指点,非常感谢你的帮助!以下是我的源代码:
Private Sub Command1_Click()
On Error GoTo errdeal
With Winsock1
.RemoteHost = Trim(txtremoteip.Text)
.RemotePort = Trim(txtremoteport.Text)
.LocalPort = Trim(txtlocalport.Text)
End With
Text4.SetFocus
Exit Sub
errdeal:
MsgBox "winsock failed to establish connection with remote server", vbCritical
End Sub
Private Sub Command2_Click()
Text5.Text = ""
With Text4
.Text = ""
.SetFocus
End With
End SubPrivate Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = vbKeyF1 Then
ChDir App.Path
Shell "notepad.exe readme.txt", vbNormalFocus
End If
End SubPrivate Sub Form_Load()
Show
MsgBox "winsock for UDT chat,F1 for help", vbCritical
txtremoteip = Winsock1.LocalIP
End SubPrivate Sub Text4_KeyPress(KeyAscii As Integer)
Static last_line_feed As Long
Dim new_line As String
If Trim(Text4) = vbNullString Then last_line_feed = 0
If KeyAscii = 13 Then
new_line = Mid(Text4, last_line_feed + 1)
last_line_feed = Text4.SelStart
Winsock1.SendData new_line
End If
End SubPrivate Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim new_text As String
Winsock1.GetData new_textEnd Sub

解决方案 »

  1.   

    1:发送信息时出错,提示“运行时错误‘10054’,连接由远程端重新设置!”//这是winsock发生了error事件 
    2:按F1没有出现README.TXT帮助文件!//你没有安装msdn吧
      

  2.   

    你的程序中要有2个winsock才对,因为要互相通信
    同时如果用tcp协议,一个做服务器,一个客户端
    如果ucp则对等
     同时你的程序中缺乏winsock.listen事件,和winsock.connect世间,此外在Winsock1.SendData new_line事件前最后先判断此时winsock是否处于连接状态,再发送数据你可以看看vb网络编程中的faq 看看着方面的例子
    比如http://community.csdn.net/Expert/FAQ/FAQ_Index.asp?id=150624
      

  3.   

    1.用TCP协议的话,服务器端的WINSOCK要打开一个端口在侦听(WINSOCK.Listen),而客户端去连接(WINSOCK.Connect).
    2.
    不用SHELL,用这个吧
    Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hWnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As LongShellExecute Me.hWnd, vbNullString, app.path & "\README.TXT",vbNullString,vbNullString,1
      

  4.   

    谢谢各位帮忙!我个人认为或许是WINSOCK。CONNECT 这个没有执行!在继续探讨中,希望大家继续发表个人观点!另外我用的是UDP协议!在一台机子上运行CLIENT和SERVER!
      

  5.   

    至于那个SHELL,我还是看不太懂楼上的方法,能否按照我编写的那样方法,只是修改一下就可以实现功能,多谢帮忙!
      

  6.   

    问题终于解决了,主要是我 少用了一个WINSOCK控件!本来我的想法是用一个WINSOCK控件,而运行。EXE文件两次而分别作为客户端和服务端,但忽略了其实两次对端口的改写是对同一个WINSOCK这样就出现了
    1:发送信息时出错,提示“运行时错误‘10054’,连接由远程端重新设置!”
    的错误,后来我又加了一个WINSOCK,且用两个FORM分别作为客户端和服务端!每个上面一个,编译运行后OK!
    至于第2个问题,还没很好解决,不过不是很大关系!
    最后谢谢大家帮忙!