freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

畢業(yè)設計-基于cs結(jié)構(gòu)的公司局域網(wǎng)文件傳輸存在的問題及對策(編輯修改稿)

2025-01-08 19:34 本頁面
 

【文章內(nèi)容簡介】 機的 IP 地址以 及工作組名三部分,代碼分別進行介紹如下: 獲取局域網(wǎng)內(nèi)用戶名的源代碼如下: Function ( GroupName : string。List : TStringList) : Boolean。 //獲取工作組的計算機名稱 type TNetResourceArray = ^TNetResource。 Var NetResource : TNetResource。 Buf : Pointer。 Count,BufSize,Res : DWord。 Ind : Integer。 lphEnum : THandle。 Temp : TNetResourceArray。 TmpStr:String。 Begin Result := False。 FillChar(NetResource, SizeOf(NetResource), 0)。////初始化網(wǎng)絡層次信息 := RESOURCEDISPLAYTYPE_SERVER。//類型為服務器(工作組 ) / := RESOURCEUSAGE_CONTAINER。 := RESOURCETYPE_DISK。//列舉文件資源信 Res := WNetOpenEnum( RESOURCE_GLOBALNET, RESOURCETYPE_DISK, RESOURCEUSAGE_CONTAINER, @NetResource,lphEnum)。 If Res NO_ERROR Then Exit。 //執(zhí)行失敗 While True Do//列舉指定工作組的網(wǎng)絡資源 Begin Count := $FFFFFFFF。//不限資源數(shù)目 BufSize := 8192。//緩沖區(qū)大小設置為 8K GetMem(Buf, BufSize)。//申請內(nèi)存,用于獲取工作組信息 /獲取計算機名稱 Res := WNetEnumResource(lphEnum, Count, Pointer(Buf), BufSize)。 第 9 頁 共 26頁 獲取局域網(wǎng)的用戶 IP 地址 以及添加用戶信息 的源代碼如下: If Res = ERROR_NO_MORE_ITEMS Then break。//資源列舉完畢 If (Res NO_ERROR) then Exit。 //執(zhí)行失敗 Temp := TNetResourceArray(Buf)。 For Ind := 0 to Count 1 do//列舉工作組的計算機名稱 Begin tmpStr:=。//獲取工作組的計算機名稱 Delete(tmpstr,1,2)。 (tmpstr)。 Inc(Temp)。 End。 End。 Res := WNetCloseEnum(lphEnum)。//關(guān)閉一次列舉 If Res NO_ERROR Then exit。//執(zhí)行失敗 Result := True。 FreeMem(Buf)。 End。 procedure (Sender: TObject。 AData: TStream。 ABinding: TIdSocketHandle)。 var readbuf:array[0..2030]of char。 msg,head,recvip,recvname,recvworkgroup,recvmsg,memo:string。 recvport:integer。 f:textfile。 begin ZeroMemory(@readbuf[0],2030)。 (readbuf,sizeof(readbuf))。 msg:=Trim(String(Pchar(@Readbuf[0])))。 //(msg)。 head:=trim(copy(msg,1,headlen))。 if head=39。LOGIN39。 THEN //添加對方 IP IP 2. 發(fā)出 Hand 握手信息 begin recvip:=。 recvport:=9000。 第 10 頁 共 26頁 獲取局域網(wǎng)的工作組名的源代碼如下 : // (39。login recv39。+recvip+inttostr(recvport))。 recvname:=copy(msg,headlen+1,namelen)。 recvworkgroup:=copy(msg,headlen+namelen+1,length(msg))。 adduser(recvname,recvworkgroup,recvip,recvport)。 handdata(recvip,myname,myworkgroup,recvport)。 { minfo:=format(39。%6s%4d%255s39。,[39。HAND39。,myname,myworkgroup])。 //返回對方 IP //端口等信息 strpcopy(minfobuf,minfo)。 (recvip,recvport,minfobuf,sizeof(minfobuf))。 } end。 if head=39。REVLOG39。then //添加對方返回的自己的 ip (對比 ) begin // (39。revlog recv39。)。 RECVPORT:=strtoint(copy(msg,headlen+1,portlen))。 recvip:=copy(msg,headlen+portlen+1,iplen)。 end。 if head=39。HAND39。 THEN //處理握手信息 添加對方 ip 返回對方 ip BEgin // (39。hand recv39。)。 RECVNAME:=COPY(msg,headlen+1,namelen)。 recvworkgroup:=copy(msg,headlen+namelen+1,workglen)。 recvip:=。 recvport:=9000。 recvp2pdata(recvip,recvname,recvworkgroup,recvport)。 END。 if head=39。LOGOUT39。 then //處理 logout delete 其 ip begin recvname:=copy(msg,headlen+1,namelen)。 if mynamerecvname then deleteuser(recvname)。 end。 Function ( var List : TStringList ) : Boolean。 //獲取服務列表 Var NetResource : TNetResource。 //初始化網(wǎng)絡層次信息 Buf : Pointer。 Count,BufSize,Res : DWORD。 lphEnum : THandle。 第 11 頁 共 26頁 p : TNetResourceArray。 i,j : SmallInt。 NetworkTypeList : TList。 //返回局域網(wǎng)中的工作組類型 Begin Result := False。 NetworkTypeList := 。 //獲取局域網(wǎng)中的工作組信息 。 //獲取整個網(wǎng)絡中的文件資源的句柄, lphEnum 為返回名柄 Res:=WNetOpenEnum( RESOURCE_GLOBALNET, RESOURCETYPE_DISK, RESOURCEUSAGE_CONTAINER, Nil,lphEnum)。 //得到網(wǎng)絡中的所有工作組的名稱 If Res NO_ERROR Then exit。//Raise Exception(Res)。//執(zhí)行失敗 //獲取整個網(wǎng)絡中的網(wǎng)絡類型信息 Count := $FFFFFFFF。//不限資源數(shù)目 BufSize := 8192。//緩沖區(qū)大小設置為 8K GetMem(Buf, BufSize)。//申請內(nèi)存,用于獲取工作組信息 Res := WNetEnumResource(lphEnum, Count, Pointer(Buf), BufSize)。 //獲取計算機名稱 If ( Res = ERROR_NO_MORE_ITEMS ) //資源列舉完畢 or (Res NO_ERROR) //執(zhí)行失敗 then break。 P := TNetResourceArray(Buf)。 For I := 0 To Count 1 Do //列舉各個工作組的信息 Begin ( StrPAS( P^.lpRemoteName )) 。//取得一個工作組的名稱 Inc(P)。 End。 End。 Res := WNetCloseEnum(lphEnum)。//關(guān)閉一次列舉 If Res NO_ERROR Then break。//執(zhí)行失敗 End。 Result := True。 FreeMem(Buf)。 。 End。 第 12 頁 共 26頁 局域網(wǎng)內(nèi)文件傳輸 文件傳輸實現(xiàn)之前,需要 獲取 在線用戶列表中的用戶信息。所以系統(tǒng)設置一個“刷新”按鈕,當用戶點擊 “刷新”后將 更新界面 的用戶列表中所有在線用戶 的主機名,主機 IP地址和工作組名。并顯示在線人數(shù)。 源代碼如下: 文件 以及文件夾 傳輸功能是本設計能夠?qū)崿F(xiàn)的理論核心。系統(tǒng)實現(xiàn)主要依靠發(fā)送端與接收端建立有效 的連接后,客戶端不斷地向 SOCKET寫入文件流,服務器端不斷接受來自客戶端的 SOCKET文件流。直到文件傳輸完畢關(guān)閉套節(jié)字連接并釋放空間。文件傳輸?shù)恼麄€過程可以分別表示為:客戶端和服務器端。 1)客戶端連接并發(fā)送功能 : 客戶端點擊文件發(fā)送按鈕以后,系統(tǒng)首先判斷是否選擇文件接受者。如果沒有選擇就提示用戶選擇接收者。然后以組件 。建立文件流并執(zhí)行 。在 機的 IP及端口號。向服務器發(fā) 送連接請求。連接成功后發(fā)送文件流。代碼依次如下: Procedure TForm1. BitBtn2Click(Sender: TObject)。 //發(fā)送按鈕 文件傳輸 事件 var filename:string。 tempItem:TListItem。 begin tempItem:=。 //獲取文件接收者 if (not assigned(tempItem)) or (tempItem=nil) then begin MessageBox( ,39。請選擇消息接收者! 39。,39。提示 39。,0)。 exit。 end。 if then //如果文件打開。 begin procedure (Sender: TObject)。 //顯示在線人數(shù) var f:textfile。 begin :=INTTOSTR()。 end。 第 13 頁 共 26頁 文件打開后客戶端調(diào)用函數(shù) 。此函數(shù)的源代碼如下 : 文 件 流 建 立 后 由 inherited create(false) 提 示 系 統(tǒng) 自 動 執(zhí) 行。碼如下 : onstructor (IP,FileName:string)。 //創(chuàng)建文件線程 begin Fip:=IP。 FFilename:=filename。 FreeonTerminate:=true。 //完成后自動關(guān)閉 inherited create(false)。 //表示創(chuàng)建線程后立刻執(zhí)行 end。 proced
點擊復制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1