|  | 
| 
 | |||||||
| 論壇說明 | 
| 歡迎您來到『史萊姆論壇』  ^___^ 您目前正以訪客的身份瀏覽本論壇,訪客所擁有的權限將受到限制,您可以瀏覽本論壇大部份的版區與文章,但您將無法參與任何討論或是使用私人訊息與其他會員交流。若您希望擁有完整的使用權限,請註冊成為我們的一份子,註冊的程序十分簡單、快速,而且最重要的是--註冊是完全免費的! 請點擊這裡:『註冊成為我們的一份子!』 | 
|  | 主題工具 | 顯示模式 | 
|  2005-06-27, 08:02 AM | #1 | 
| 版區管理員  |  以VB實做一對一聊天室 本程式轉貼自Visual Basic遊戲設計實務 位元文化 編著 若單機作業可將IP設成127.0.0.1 Chat.frm內容 語法: VERSION 5.00
Object = "{248DD890-BB45-11CF-9ABC-0080C7E7B78D}#1.0#0"; "MSWINSCK.OCX"
Begin VB.Form frmChat 
   BackColor       =   &H00C0C0C0&
   BorderStyle     =   1  '單線固定
   Caption         =   "一對一聊天室"
   ClientHeight    =   4770
   ClientLeft      =   45
   ClientTop       =   330
   ClientWidth     =   7185
   LinkTopic       =   "Form1"
   MaxButton       =   0   'False
   MinButton       =   0   'False
   ScaleHeight     =   4770
   ScaleWidth      =   7185
   StartUpPosition =   3  '系統預設值
   Begin VB.CommandButton cmdClear 
      Caption         =   "清除"
      Height          =   375
      Left            =   6240
      TabIndex        =   4
      Top             =   3600
      Width           =   735
   End
   Begin VB.CommandButton cmdSend 
      Caption         =   "送出"
      Height          =   375
      Left            =   6240
      TabIndex        =   2
      Top             =   4080
      Width           =   735
   End
   Begin VB.TextBox txtMsg 
      BeginProperty Font 
         Name            =   "新細明體"
         Size            =   12
         Charset         =   136
         Weight          =   400
         Underline       =   0   'False
         Italic          =   0   'False
         Strikethrough   =   0   'False
      EndProperty
      Height          =   375
      Left            =   360
      TabIndex        =   1
      Top             =   4080
      Width           =   5655
   End
   Begin VB.ListBox lstMsg 
      BeginProperty Font 
         Name            =   "新細明體"
         Size            =   9.75
         Charset         =   136
         Weight          =   400
         Underline       =   0   'False
         Italic          =   0   'False
         Strikethrough   =   0   'False
      EndProperty
      Height          =   2985
      Left            =   360
      TabIndex        =   0
      Top             =   240
      Width           =   6495
   End
   Begin MSWinsockLib.Winsock Winsock1 
      Left            =   0
      Top             =   0
      _ExtentX        =   741
      _ExtentY        =   741
      _Version        =   393216
   End
   Begin VB.Label lblName 
      AutoSize        =   -1  'True
      BackColor       =   &H00C0C0C0&
      Caption         =   "Name"
      BeginProperty Font 
         Name            =   "新細明體"
         Size            =   12
         Charset         =   136
         Weight          =   400
         Underline       =   0   'False
         Italic          =   0   'False
         Strikethrough   =   0   'False
      EndProperty
      Height          =   240
      Left            =   360
      TabIndex        =   3
      Top             =   3720
      Width           =   555
   End
End
Attribute VB_Name = "frmChat"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Option Explicit
Public sServerIP As String '對方主機的IP
Public sName As String '使用者暱稱
'********** 按下清除鍵 **********
Private Sub cmdClear_Click()
    lstMsg.Clear
End Sub
'********** 送出訊息 **********
Private Sub cmdSend_Click()
    Dim sSend As String
    sSend = lblName.Caption & txtMsg.Text
    lstMsg.AddItem sSend
    If lstMsg.ListCount > 15 Then lstMsg.RemoveItem 0
    Winsock1.SendData sSend
    txtMsg.Text = ""
End Sub
'********** 連結 **********
Public Sub subConnect()
    lblName.Caption = sName & ":"
    lstMsg.Clear '清除資訊
    cmdSend.Enabled = False '設定送出鍵為無效
    If bIfServer = True Then '當做伺服端
        With Winsock1
            .LocalPort = 2469 '自訂值,但值要在1024以上
            .Bind
            .Listen
        End With
        lstMsg.AddItem "等待連結---"
        frmChat.Caption = frmChat.Caption & "---伺服端"
    Else '當做用戶端
        With Winsock1
            .RemoteHost = sServerIP
            .RemotePort = 2469
            .Connect
        End With
        lstMsg.AddItem "正在連結---"
        frmChat.Caption = frmChat.Caption & "---用戶端"
    End If
End Sub
'********** 斷線離開 **********
Private Sub Form_Unload(Cancel As Integer)
    If Winsock1.State = sckConnected Then
        Winsock1.SendData sName & "離線了!"
        DoEvents
    End If
    End
End Sub
'********** 完成連結動作 **********
Private Sub Winsock1_Connect()
    cmdSend.Enabled = True
    Winsock1.SendData sName & "上線囉!"
End Sub
'********** 發生要求連結 **********
Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long)
    Winsock1.Close
    Winsock1.Accept requestID
    Winsock1.SendData "已和" & sName & "連上了!"
    cmdSend.Enabled = True
End Sub
'********** 當有資料送達時 **********
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
    Dim b As Boolean
    Dim sMsgString As String
    Winsock1.GetData sMsgString, vbString, bytesTotal
    lstMsg.AddItem sMsgString
    If lstMsg.ListCount > 15 Then lstMsg.RemoveItem 0
End Sub
'********** 按下 Enter 時 **********
Private Sub txtMsg_KeyPress(KeyAscii As Integer)
    If KeyAscii = 13 Then cmdSend_Click
End Sub | 
|   | 
		送花文章: 1542,
		
			
		   |