接收指定IP的數(shù)據(jù)包,其他IP都要過濾吧,那就用防火墻來搞吧
創(chuàng)新互聯(lián)是一家專業(yè)提供延川企業(yè)網(wǎng)站建設(shè),專注與成都網(wǎng)站建設(shè)、網(wǎng)站設(shè)計、H5場景定制、小程序制作等業(yè)務(wù)。10年已為延川眾多企業(yè)、政府機構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)的建站公司優(yōu)惠進行中。
使用的是client段的獲取方式,用client的可以指定IP,代碼大概如下
public void SendMessage()
{
ASCII = Encoding.ASCII;
// 構(gòu)造用于發(fā)送的 字節(jié)緩沖.
Byte[] sendBytes = ASCII.GetBytes(SEND_MESSAGE);
// 構(gòu)造用于接收的 字節(jié)緩沖.
Byte[] recvBytes = new Byte[256];
// IP地址.
IPAddress localAddr = IPAddress.Parse("192.168.19.81");
// 接入點.
IPEndPoint ephost = new IPEndPoint(localAddr, PORT);
// 第一個參數(shù):AddressFamily = 指定 Socket 類的實例可以使用的尋址方案。
// Unspecified 未指定地址族。
// InterNetwork IP 版本 4 的地址。
// InterNetworkV6 IP 版本 6 的地址。
//
// 第二個參數(shù):SocketType = 指定 Socket 類的實例表示的套接字類型。
// Stream 一個套接字類型,支持可靠、雙向、基于連接的字節(jié)流,而不重復(fù)數(shù)據(jù),也不保留邊界。
// 此類型的 Socket 與單個對方主機通信,并且在通信開始之前需要建立遠程主機連接。
// 此套接字類型使用傳輸控制協(xié)議 (Tcp),AddressFamily 可以是 InterNetwork,也可以是 InterNetworkV6。
//
// 第三個參數(shù):ProtocolType = 指定 Socket 類支持的協(xié)議。
// Tcp 傳輸控制協(xié)議 (TCP)。
Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
try
{
// 嘗試連接主機.
s.Connect(ephost);
//Console.WriteLine("向服務(wù)器發(fā)送到了:{0}", SEND_MESSAGE);
// 向主機發(fā)送數(shù)據(jù).
// s.Send(sendBytes, sendBytes.Length, SocketFlags.None);
// 接收服務(wù)器的應(yīng)答.
Int32 bytes = s.Receive(recvBytes, recvBytes.Length, SocketFlags.None);
StringBuilder buff = new StringBuilder();
// while (bytes 0)
// {
// 將緩沖的字節(jié)數(shù)組,裝換為字符串.
// String str = ASCII.GetString(recvBytes, 0, bytes);
String str = "";
for (int i = 0; i recvBytes.Length; i++)
{
str = str + recvBytes[i];
}
int iCount = 0;
iCount = int.Parse(str.Substring(13, 6)) ;
// 加入字符串緩存
buff.Append(str);
// 再次接受,看看后面還有沒有數(shù)據(jù).
//bytes = s.Receive(recvBytes, recvBytes.Length, SocketFlags.None);
// }
textBox1.Text = iCount.ToString();
}
catch (Exception ex)
{
MessageBox.Show("連接/發(fā)送/接收過程中,發(fā)生了錯誤!");
MessageBox.Show(ex.Message);
//Console.WriteLine("連接/發(fā)送/接收過程中,發(fā)生了錯誤!");
//Console.WriteLine(ex.Message);
//Console.WriteLine(ex.StackTrace);
}
finally
{
s.Close();
}
直接調(diào)用就行了,不過可能你需要引用文件,以下是例子
//文件conn.php,用于連接數(shù)據(jù)庫
class
DB_Conn
{
}
//文件
db.php,
用于數(shù)據(jù)庫操作,這個類必然需要使用數(shù)據(jù)庫連接對象,因此引用conn.php
require_once
conn.php;
class
DB
{
}
//文件user.php
require_once
'db.php';
class
User
{
public
function
getUserById($id)
{
$conn
=
new
Db_Conn();
$db
=
new
Db();
}
}以上只是示意,如果文件不在一個目錄下記得修改路徑。而且,一般來說數(shù)據(jù)庫對象應(yīng)該包含連接數(shù)據(jù)庫和數(shù)據(jù)操作的全部功能,不需要分別寫在兩個類里面。我覺得你對面向?qū)ο蟮睦斫膺€很淺薄,需要進一步累積經(jīng)驗。
TCP協(xié)議頭最少20個字節(jié),包括以下的區(qū)域
TCP源端口(Source Port):16位的源端口其中包含初始化通信的端口。源端口和源IP地址的作用是
標示報問的返回地址。
TCP目的端口(Destination port):16位的目的端口域定義傳輸?shù)哪康摹_@個端口指明報文接收計算
機上的應(yīng)用程序地址接口。
TCP序列號(序列碼,Sequence Number):32位
TCP應(yīng)答號(Acknowledgment Number):32位的序列號由接收端計算機使用,重組分段的報文成最初形式。,如果設(shè)置了ACK控制位,這個值表示一個準備接收的包的序列碼。
?php
$con = mysql_connect("你的數(shù)據(jù)庫","用戶名","密碼");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("my_db", $con);
$result = mysql_query("select * from products order by products_id asc ");
?
table
tr
th產(chǎn)品圖片/th
th產(chǎn)品名稱/th
th產(chǎn)品價格/th
/tr
tbodytr
/table
?php
while($row = mysql_fetch_array($result)){
echo "td".$row['products_image']."/td";
echo "td".$row['products_name']."/td";
echo "td".$row['products_price']."/td";
}
?
/tr/tbody/table