Visual Basic(이하 VB)은 11개의 강력한 프로그래밍 언어입니다. 특히 4.0 이후에는 OLE 자동화 기술이 지원되어 프로그래밍의 편의성이 더욱 높아졌습니다. 얼마 전 저는 웹 기반 데이터베이스를 작성하려고 했습니다. 하지만 인터넷에 연결되어 있지 않기 때문에 테스트할 수는 없습니다. 그래서 한 컴퓨터에서 네트워크 기능을 테스트하는 데 사용할 수 있는 OLEAutomation을 생각했습니다. 수정 후에는 모뎀을 통해 연결하여 사용할 수도 있습니다. 다음에는 Visual Basic을 사용하여 소규모 네트워크 시스템을 작성하는 방법을 소개하겠습니다.
----먼저 지원 네트워크 OLEAutomation을 구축합니다.
----VB를 시작합니다. Form1 형식으로 목록 상자 List1을 만들고 그 위에 Frame1을 만든 다음 Caption 속성을 비어 있게 설정합니다. 중간에 Label1을 만들고 마찬가지로 캡션을 비워 둡니다. 마지막으로 List1의 Caption UserList를 사용하여 Label2를 만듭니다. 마지막으로 Timer1 타이머를 설치하고 Interval을 3000으로 설정하고 Enabled를 False로 설정합니다. 이제 NetWorkConnection의 형태 부분이 완성되었습니다.
----그런 다음 VB의 도구 메뉴에서 옵션을 선택하고 필요에 따라 다양한 내용을 입력합니다.
----다음으로 삽입 메뉴에서 모듈을 선택하여 새로운 모듈인 Module1을 생성합니다. (일반)에 다음 코드를 입력합니다.
(UserInfo 데이터 유형)
유형사용자정보
사용자 이름AsString
AliasAsInteger
종료 유형
(최대 사용자 수)
PublicConstMaxUser=10
(메시지 정의)
PublicConstMsg_User_LogOn=1
PublicConstMsg_User_LogOff=2
(데이터 유형 설정)
PublicUsers(MaxUser)AsUserInfo
PublicInbox(MaxUser)AsString
PublicUserSystemInboxAsInteger
PublicOnline(MaxUser)AsBoolean
서브메인()
Form1.Show
EndSub
----UserInfo 데이터 유형은 로그인한 사용자의 사용자 이름과 별칭을 기록합니다. 표시 및 통신에는 별칭만 사용하세요. 사용자 이름은 사용자가 유효한지 확인하는 데에만 사용됩니다. 보안상의 이유로 위 데이터는 사용자가 임의로 액세스할 수 없으며 다음 서브루틴을 통해 액세스해야 합니다.
----삽입 메뉴에서 ClassModule을 선택하여 새로운 클래스 Class1을 생성합니다. 이름을 Common으로 바꾸고 속성을 설정합니다.
----다음 코드를 입력하세요.
----(사용자 ID 값을 가져오는 기능을 제공합니다. 사용자는 이 함수를 통해 별칭을 사용하여 ID 값을 반환할 수 있습니다.)
PublicFunctionGetUserID(AliasAsString)AsInteger
ForI=1ToMaxUser
IfUsers(I).Alias=AliasThenGetUserID=I
다음I
EndFunction
----(시스템 정보를 얻는 기능을 제공합니다. 이를 통해 사용자가 변경한 사항이 있는지 알 수 있습니다.)
PublicFunctionGetSystemMessage()AsInteger
GetSystemMessage=UserSystemInbox
EndFunction
----(사용자 정보를 가져오는 기능을 제공합니다. "|"로 구분된 모든 온라인 사용자의 별칭을 가져오는 데 사용합니다.)
PublicFunctionGetUserInfo()AsString
ForI=1ToMaxUser
IfUsers(I).사용자 이름<>""Then
temp=temp 사용자(I).별칭 "|"
종료
다음I
GetUserInfo=임시
EndFunction
----(이용자의 개인정보를 획득하는 기능을 제공합니다. 다른 이용자를 수락하는데 사용됩니다.
사용자가 보낸 정보. )
PublicFunctionGetUserMessage(IDAsInteger)AsString
IfID<=0OrID>MaxUserThen
종료 기능
종료
GetUserMessage=받은 편지함(ID)
EndFunction
----(로그아웃 기능을 제공합니다. 네트워크에서 로그아웃하는데 사용됩니다.)
PublicFunctionLogOff(IDAsInteger)AsBoolean
IfID<=0OrID>MaxUserThen
로그오프=거짓
종료 기능
종료
IfUsers(ID).사용자 이름<>""그러면
사용자(ID).사용자 이름=""
로그오프=참
또 다른
로그오프=거짓
종료
UserSystemInbox=Msg_User_LogOff
`-------------UpdateForm1------------
ForI=0ToForm1.List1.ListCount-1
IfForm1.List1.List(I)=Users(ID).AliasThen
`List1에서 사용자 별칭을 찾아 삭제합니다.
Form1.List1.RemoveItemI
종료 대상
종료
다음I
IfForm1.List1.ListCount=0Then`로그인된 사용자가 없는 경우
Form1.Label1.Caption="연결이 끊어졌습니다"
Form1.timer1.Enabled=거짓
종료
EndFunction
----(인터넷 접속을 위한 로그인 기능 제공)
PublicFunctionLogOn(UsernameAsString,
AliasAsString)AsInteger
ForI=1ToMaxUser
IfUsers(I).Username=""그러면
사용자(I).사용자 이름=사용자 이름
사용자(I).Alias=별칭
로그온=I
UserSystemInbox=Msg_User_LogOn`"사용자 로그인" 정보 보내기
`---------------UpdateForm1------------
Form1.List1.AddItemAlias`온라인 사용자가 있습니다.
Form1.Label1.Caption="연결됨"
Form1.timer1.Enabled=True
종료 기능
종료
다음I
로그온=0
EndFunction
----(사용자의 온라인 상태 플래그를 새로 고치는 기능을 제공합니다. 이를 통해 시스템은 온라인 상태인지 확인할 수 있습니다. 6초 이내에 이 기능을 호출하지 않으면 시스템이 자동으로 귀하를 삭제합니다.)
PublicSubRefresh(IDAsInteger)
IfID<=0OrID>MaxUserThenExitSub
온라인(ID)=참
EndSub
----(이용자의 개인정보를 전송하는 기능을 제공합니다. 다른 이용자에게 정보를 전송하는데 사용됩니다.)
PublicFunctionSendUserMessage(MessageAs
문자열,ToIDAsInteger)AsBoolean
IfToID<=0OrToID>MaxUserThen
SendUserMessage=거짓
종료 기능
종료
받은 편지함(ToID)=메시지
SendUserMessage=참
EndFunction
----Form1의 코드에 나머지 코드를 입력하세요.
(Form1 초기화)
PRivateSubForm_Load()
Label1.Caption="연결이 끊어졌습니다"
Form1.Caption="NetWorkConnectedServer"
Form1.Show
ForI=1ToMaxUser
사용자(I).사용자 이름=""
다음I
EndSub
----(온라인의 가치를 판단하여 사용자가 온라인 상태인지 정기적으로 확인)
PrivateSubtimer1_Timer()
ForI=1ToMaxUser
IfUsers(I).사용자 이름<>""그러면
IfOnline(I)=FalseThen
Fors=0ToList1.ListCount-1
IfList1.List(s)=Users(I).AliasThen
목록1.항목 제거
사용자(I).사용자 이름=""
UserSystemInbox=Msg_User_LogOff
`"사용자 로그아웃" 메시지 보내기
종료
다음
종료
온라인(I)=거짓
종료
다음I
IfList1.ListCount=0그러면
`사용자가 없는 경우
Label1.Caption="연결이 끊어졌습니다"
타이머1.활성화=거짓
종료
EndSub
----이 프로그램을 실행해 보세요. 다른 VB를 시작하고 사용자 부분 작성을 시작하십시오. 기본 형식에서 아래 표시된 대로 이러한 컨트롤을 정렬합니다.
----다음 코드를 입력하세요
PublicIDAs정수
PublicConnectedAsObject
PrivateSubCommand1_Click()`로그인
DimusernameAsString
DimaliasAsString
SetConnected=CreateObject
("NetWorkConnection.Common")NetWorkConnection 시작
사용자 이름=Text1.Text
별칭=Text2.Text
ID=Connected.logon(username,alias)`로그인하고 ID 값을 반환합니다.
타이머1.활성화=참
Command4_클릭
EndSub
PrivateSubCommand2_Click()`로그아웃
x=연결됨.logoff(ID)
타이머1.활성화=거짓
Setx=Nothing`객체 해제
EndSub
PrivateSubCommand3_Click()`사용자 정보 보내기
DimTempIDAs정수
DimTempStringAsString
DimxAsString
DimyAs부울
x=Combo1.Text
TempID=Connected.getuserid(x)`지정된 사용자의 ID 값을 가져옵니다.
TempString=Text3.Text
y=Connected.sendusermessage(TempString,TempID)
EndSub
PrivateSubCommand4_Click()
ForI=0ToCombo1.ListCount1`콤보1 지우기
콤보1.항목0 제거
다음I
x=Connected.GetUserInfo`사용자 정보 수신
CD$=x
마지막=1
ForI=1ToLen(cd$)
IfMid$(cd$,I,1)="|"그러면
이름f$=중간$(cd$,마지막,I-마지막)
Combo1.AddItemNamef$` 사용자 별칭을 분리하고 Combo1에 추가
마지막=나는 1
종료
다음I
EndSub
PrivateSubForm_Load()
타이머1.활성화=거짓
타이머1.간격=300
EndSub
PrivateSubTimer1_Timer()
Connected.Refresh(ID)`사용자 로고 새로 고침
x=Connected.GetSystemMessage()`시스템 정보 수신
y=Connected.GetUserMessage(ID)`사용자 정보 수신
Ify<>""앤디<>Label6.CaptionThenLabel6.Caption=y
Ifx<>Val(Label4.Caption)Then`Refresh Combo1
Label4.Caption=x
Command4_클릭
종료
EndSub
----달리기 시작합니다. 사용자 이름과 별칭을 입력하고 로그온을 클릭한 후 이전 VB 예제에서 이름이 포함되어 있는지 확인하세요. 그렇다면 귀하의 "허브"가 성공했음을 증명합니다. 이때, 로그인한 사용자가 로그오프 기능을 사용하지 않고 연결을 끊는 이유가 무엇이든 시스템은 6초 후에 해당 사용자를 자동으로 삭제합니다. 다른 사용자가 영향을 받지 않는지 확인하세요.
----이 프로그램은 모뎀 기능을 지원하도록 수정되었습니다. 프로그램의 사용자 부분은 그대로 유지될 수 있습니다. 컴파일 시 옵션에서 RemoteSupportFile을 선택하고 포함된 설치 프로그램을 사용하여 네트워크 서버에 설치하면 진정한 "네트워킹"이 구현됩니다. ->