當前位置:首頁 » 雲伺服器 » 網路伺服器如何接收客戶端數據

網路伺服器如何接收客戶端數據

發布時間: 2022-12-23 22:27:10

A. 伺服器與客戶端之間數據交互

C/S模式和B/S各有其有點也各有其缺點,B/S模式在開發中需要考慮數據如何從客戶端提交到伺服器端,數據又如何返回到客戶端,這些是B/S模式所特有的,在去年之前,開發B/S模式的程序,我都是利用form來交互數據,當我看到XML之後,發現XML是個好冬冬,有很多優點,有好的東西當然不能獨享啦,想當年為了實現XML交互數據,幾乎把網路翻了個遍。咚,一塊磚頭上來了。呵呵,廢話少說,下面我們就進入正題。

B/S模式分為伺服器端和客戶端,客戶端接受用戶的請求,客戶端向應用服務提出請求,應用服務從資料庫服務中獲得數據,應用服務將數據進行計算並將結果提交給客戶端,客戶端將結果呈現給用戶。這樣,我們就看到了數據從客戶到伺服器,經過伺服器的處理再返回到客戶端,由客戶端軟體(如IE)顯示結果。

(以ASP教本語言為例,其它的語言一樣哈。)

1.Form方式

Form方式是最基本的向伺服器提交數據的方式。

test.asp文件代碼:

<%@ Language=VBScript %>

<%

Response.Expires=-1

Response.CharSet="UTF-8"

Session.CodePage="65001"

%>

<form name="frmTest" id="frmTest" action="test.asp" method="POST">

<input name="name" id=" name" type="text" value="">

<input type="hidden" name="number" id="number" value="10">

<input type="submit" value="Submit" name="B1">

</form>

<%

dim intnumber

dim strname

if IsEmpty(Request("name")) then

strname =""

else

strname =Request("name")

end if

if IsEmpty(Request("number")) then

intnumber =0

else

intnumber =Request("number")

end if
希望對你能有所幫助。

B. 客戶端與網路伺服器建立連接後用什麼方式傳送數據

那要看你要傳送什麼了。傳送文件你可以通過網路共享、內部通訊軟體等等

C. C# socket 接收數據

1)如果「數據條數」定義是:客戶端發送數據幀的數量,那麼,伺服器每當收到一次客戶端的數據幀,計數就加1;例如,客戶端A連續發送了「你好」,「我在這里」兩條信息,伺服器的計數就應該增加2;

2)伺服器可以接收來自多個客戶端的數據,可以分別統計每個客戶端數據條數,也可以統計所以客戶端數據總的條數。

針對上面兩個需求,實現起來大致框架如下:

1)定義一個Dictionary<string,int> num,用來計數

Dictionary<string,int>num=newDictionary<string,int>();

其中,泛型參數string用於表示客戶端;int用於計數

2)每當伺服器接收到來自客戶端數據後,可以獲得客戶端的IPEndPoint clientEP,將clientEP轉換成字元串,作為Dictionary 的鍵值,用來標識客戶端

stringclient=clientEP.ToString();
if(!num.ContainsKey(client))
{
//在集合中添加一個客戶端計數項
num.Add(client,0);
}
//數據條數加1
num[client]++;

3)分別統計並顯示每個客戶的數據條件

foreach(varcinnum)
{
Console.WriteLine("客戶端{0},總數{1}",c.Key,c.Value);
}

4)統計並顯示伺服器接收到所有客戶端數據條數的總數

varqry=fromcinnum.Valuesselectc
Console.WriteLine("接收總數{0}",qry.Sum());

D. 客戶端如何讀取伺服器發送的數據

一般來講是客戶端向伺服器發送服務請求,伺服器根據客戶端所發送的服務請求給客戶端發數據。這里包括網路協議和服務認證。你可以再網上下載抓包工具來讀取發送服務請求和返回服務請求的結果。 數據都是二進制、八進制和十六進制相互轉換封包來進行發送的。客戶端向伺服器發送一個請求,客戶端會對該請求認證來確定是否合法。合法則會將數據封包加密反饋給客戶端,客戶端則得到請求結果。具體你可查一些有關網路服務的資料。

E. 網路編程伺服器和客戶端都接收不到數據,求大神指教,代碼如下:

php,asp,asp.net各有各的連接字元串,而且連接sqlserver,mysql,Orcale等等都不一樣,建議根據你使用的情況,具體先掌握一種,其它上手就會快一些。
資料庫應該是屬於伺服器端的一個組成部分,一般架站後資料庫在伺服器端,選用什麼資料庫需要你自己確認。

F. 如何使用VB中的UDP穿過客戶端上網用的伺服器返回給客戶端數據

你問的就是網路傳輸中的經典問題「內網穿透」。

若規定必須用UDP協議,簡單解決的話內網應備有一台有公網IP的伺服器,命名為「伺服器A」。由伺服器A負責內網與客戶端UDP協議數據交換,然後由「伺服器A」與公網另一台「伺服器B」再進行UDP協議的數據交換即可。
也就是整體架構設計上,增加一個公網與內網的中轉站。

若是可以用TCP協議就不存在此問題了,內網「客戶端」直接連接公網「伺服器B」,並互發數據。

回答補充:
QQ是支持TCP協議的,你可以到QQ技術支持服務自己看http://service.qq.com/info/20038.html
QQ軟體採用2種協議,UDP和TCP/IP協議,您可以在登陸設置中選擇協議登錄。

在用UDP協議時,QQ有專門措施防止數據丟失,發送數據之前它會ping對方主機,如果沒有回復,就通過TCP協議伺服器轉發。

G. 伺服器和客戶端怎樣傳輸數據面試題

客戶端發出傳輸數據請求到伺服器特定埠,伺服器接到請求後,建立連接,傳輸數據。。。

H. socket編程伺服器端接收數據

//服務端:
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading;
Thread mythread ;
Socket socket;
// 清理所有正在使用的資源。
protected override void Dispose( bool disposing )
{
try
{
socket.Close();//釋放資源
mythread.Abort ( ) ;//中止線程
}
catch{ }
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
public static IPAddress GetServerIP()
{
IPHostEntry ieh=Dns.GetHostByName(Dns.GetHostName());
return ieh.AddressList[0];
}
private void BeginListen()
{
IPAddress ServerIp=GetServerIP();
IPEndPoint iep=new IPEndPoint(ServerIp,8000);
socket=new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
byte[] byteMessage=new byte[100];
this.label1.Text=iep.ToString();
socket.Bind(iep);
// do
while(true)
{
try
{
socket.Listen(5);
Socket newSocket=socket.Accept();
newSocket.Receive(byteMessage);
string sTime = DateTime.Now.ToShortTimeString ( ) ;
string msg=sTime+":"+"Message from:";
msg+=newSocket.RemoteEndPoint.ToString()+Encoding.Default.GetString(byteMessage);
this.listBox1.Items.Add(msg);
}
catch(SocketException ex)
{
this.label1.Text+=ex.ToString();
}
} // while(byteMessage!=null);
}
//開始監聽
private void button1_Click(object sender, System.EventArgs e)
{
try
{
mythread = new Thread(new ThreadStart(BeginListen));
mythread.Start();
}
catch(System.Exception er)
{
MessageBox.Show(er.Message,"完成",MessageBoxButtons.OK,MessageBoxIcon.Stop);
}
}
//客戶端:
using System.Net;
using System.Net.Sockets;
using System.Text;
private void button1_Click(object sender, System.EventArgs e)
{
BeginSend();
}
private void BeginSend()
{
string ip=this.txtip.Text;
string port=this.txtport.Text;
IPAddress serverIp=IPAddress.Parse(ip);
int serverPort=Convert.ToInt32(port);
IPEndPoint iep=new IPEndPoint(serverIp,serverPort);
byte[] byteMessage;
Socket socket=new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
socket.Connect(iep);
byteMessage=Encoding.ASCII.GetBytes(textBox1.Text);
socket.Send(byteMessage);
socket.Shutdown(SocketShutdown.Both);
socket.Close();
}

//基於TCP協議的發送和接收端
//TCP協議的接收端
using System.Net.Sockets ; //使用到TcpListen類
using System.Threading ; //使用到線程
using System.IO ; //使用到StreamReader類

int port = 8000; //定義偵聽埠號
private Thread thThreadRead; //創建線程,用以偵聽埠號,接收信息
private TcpListener tlTcpListen; //偵聽埠號
private bool blistener = true; //設定標示位,判斷偵聽狀態
private NetworkStream nsStream; //創建接收的基本數據流
private StreamReader srRead;
private System.Windows.Forms.StatusBar statusBar1;
private System.Windows.Forms.Button button1;
private System.Windows.Forms.ListBox listBox1; //從網路基礎數據流中讀取數據
private TcpClient tcClient ;
private void Listen ( )
{
try
{
tlTcpListen = new TcpListener ( port ) ; //以8000埠號來初始化TcpListener實例
tlTcpListen.Start ( ) ; //開始監聽
statusBar1.Text = "正在監聽" ;
tcClient = tlTcpListen.AcceptTcpClient ( ) ; //通過TCP連接請求
nsStream = tcClient.GetStream ( ) ; //獲取用以發送、接收數據的網路基礎數據流
srRead=new StreamReader(nsStream);//以得到的網路基礎數據流來初始化StreamReader實例
statusBar1.Text = "已經連接!";
while( blistener ) //循環偵聽
{
string sMessage = srRead.ReadLine();//從網路基礎數據流中讀取一行數據
if ( sMessage == "STOP" ) //判斷是否為斷開TCP連接控制碼
{
tlTcpListen.Stop(); //關閉偵聽
nsStream.Close(); //釋放資源
srRead.Close();
statusBar1.Text = "連接已經關閉!" ;
thThreadRead.Abort(); //中止線程
return;
}
string sTime = DateTime.Now.ToShortTimeString ( ) ; //獲取接收數據時的時間
listBox1.Items.Add ( sTime + " " + sMessage ) ;
}
}
catch ( System.Security.SecurityException )
{
MessageBox.Show ( "偵聽失敗!" , "錯誤" ) ;
}
}
//開始監聽
private void button1_Click(object sender, System.EventArgs e)
{
thThreadRead = new Thread ( new ThreadStart ( Listen ) );
thThreadRead.Start();//啟動線程
button1.Enabled=false;
}
// 清理所有正在使用的資源。
protected override void Dispose( bool disposing )
{
try
{
tlTcpListen.Stop(); //關閉偵聽
nsStream.Close();
srRead.Close();//釋放資源
thThreadRead.Abort();//中止線程
}
catch{}
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
//TCP協議的發送端
using System.Net.Sockets; //使用到TcpListen類
using System.Threading; //使用到線程
using System.IO; //使用到StreamWriter類
using System.Net; //使用IPAddress類、IPHostEntry類等

private StreamWriter swWriter; //用以向網路基礎數據流傳送數據
private NetworkStream nsStream; //創建發送數據的網路基礎數據流
private TcpClient tcpClient;
private System.Windows.Forms.Button button1;
private System.Windows.Forms.TextBox textBox1;
private System.Windows.Forms.Button button2;
private System.Windows.Forms.TextBox textBox2;
private System.Windows.Forms.StatusBar statusBar1;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.Label label2; //通過它實現向遠程主機提出TCP連接申請
private bool tcpConnect = false; //定義標識符,用以表示TCP連接是否建立

//連接
private void button1_Click(object sender, System.EventArgs e)
{
IPAddress ipRemote ;
try
{
ipRemote = IPAddress.Parse ( textBox1.Text ) ;
}
catch //判斷給定的IP地址的合法性
{
MessageBox.Show ( "輸入的IP地址不合法!" , "錯誤提示!" ) ;
return ;
}
IPHostEntry ipHost ;
try
{
ipHost = Dns.Resolve ( textBox1.Text ) ;
}
catch //判斷IP地址對應主機是否在線
{
MessageBox.Show ("遠程主機不在線!" , "錯誤提示!" ) ;
return ;
}
string sHostName = ipHost.HostName ;
try
{
TcpClient tcpClient = new TcpClient(sHostName,8000);//對遠程主機的8000埠提出TCP連接申請
nsStream = tcpClient.GetStream();//通過申請,並獲取傳送數據的網路基礎數據流
swWriter = new StreamWriter(nsStream);//使用獲取的網路基礎數據流來初始化StreamWriter實例
button1.Enabled = false ;
button2.Enabled = true ;
tcpConnect = true ;
statusBar1.Text = "已經連接!" ;
}
catch
{
MessageBox.Show ( "無法和遠程主機8000埠建立連接!" , "錯誤提示!" ) ;
return ;
}
}

//發送
private void button2_Click(object sender, System.EventArgs e)
{
if (textBox2.Text !="")
{
swWriter.WriteLine(textBox2.Text);//刷新當前數據流中的數據
swWriter.Flush();
}
else
{
MessageBox.Show("發送信息不能為空!","錯誤提示!");
}
}
// 清理所有正在使用的資源。
protected override void Dispose( bool disposing )
{
if ( tcpConnect )
{
swWriter.WriteLine ( "STOP" ) ; //發送控制碼
swWriter.Flush (); //刷新當前數據流中的數據
nsStream.Close (); //清除資源
swWriter.Close ();
}
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );

I. 在伺服器端如何正確接收提交數據請編寫代碼。

你用過serlvet嗎?post和get方式的最大區別就是post在地址欄是沒有參數傳遞的,就是看不到參數的傳遞,而get就是在地址欄可以看到參數的傳遞。你這樣寫不對啊,如果需要表單提交的話可以action裡面輸入post就默認的是post方式了你要接受post的參數的話用request.getParameter("參數")來接受

J. TCP/IP連接中伺服器發送[RST,ACK],客戶端應該如何回應

1、首先,創建tcp伺服器,創建的方式如下面圖中所示,先創建一個net服務,然後監聽connect和data事件,並對收到的數據進行確認,監聽埠8431。

熱點內容
手機熱點密碼忘了怎麼辦 發布:2025-03-15 09:28:26 瀏覽:362
緩解壓力鍛煉方法 發布:2025-03-15 09:23:01 瀏覽:426
impdp存儲過程 發布:2025-03-15 09:20:05 瀏覽:741
pythoniris 發布:2025-03-15 09:05:27 瀏覽:190
浪淘沙伺服器怎麼沒有了 發布:2025-03-15 09:05:26 瀏覽:100
ftprpm安裝包下載 發布:2025-03-15 09:03:53 瀏覽:723
如何判斷背包配置 發布:2025-03-15 09:03:00 瀏覽:900
淘寶api源碼 發布:2025-03-15 09:00:00 瀏覽:160
壓縮復原修車 發布:2025-03-15 08:46:52 瀏覽:78
linux調試匯編 發布:2025-03-15 08:38:09 瀏覽:108