導航:首頁 > 編程語言 > 伺服器編程流程

伺服器編程流程

發布時間:2022-04-14 10:02:08

Ⅰ 請簡述dns伺服器的工作過程

三種DNS伺服器及其工作模式。

該遞歸解析器可以駐留在家庭路由器中,由互聯網服務提供商託管或由第三方提供,例如8.8.8.8谷歌的公共DNS遞歸解析器或CloudFlare的DNS服務為1.1.1.1。

由於DNS作為分布式資料庫運行,不同的伺服器負責DNS名稱空間的不同部分,在DNS方面具有權威性。

圖2描述了一個想像中的DNS分析方案,其中應用程序使用所有三種類型的DNS伺服器將域名域名分析為IPv4地址,也就是說,DNS地址資源記錄。

如有幫助,敬請採納,謝謝!

第一步,主機上的存根解析器將DNS查詢發送到遞歸解析器。第二步,遞歸解析器將查詢重新發送到根區域的DNS權威名稱伺服器之一。這權威名伺服器沒有對查詢的反應,但是它可以為.com區域提供權威名伺服器的參考。因此,遞歸解析器將查詢重新發送到.com區域的權威名伺服器。

這個過程一直進行到查詢最終重新發送到域名區域的權威名稱伺服器。該伺服器可以提供原始查詢答案——域名的IP地址是什麼?最後,在步驟8中,該響應被發送到存根分析器。

值得注意的是,所有這些DNS信息都是明輸的,惡意參與者可能會監控用戶的網際網路活動。任何管理DNS伺服器的人都應該知道如何解決DNS隱私問題,以及如何緩解這些威脅。

如有幫助,敬請採納,謝謝!

Ⅱ 通過Socket實現網路編程的主要過程是什麼

TCP/IP網路通訊開發,一般採用Socket開發。它分伺服器和客戶端。伺服器端流程:
1、創建伺服器套接字---分配內存、初始化
2、伺服器套接字--偵聽
3、建立與客戶端配套的客戶端套接字
4、與客戶端通訊(可以多客戶端)
5、關閉、銷毀伺服器端相應套接字
----------------
客戶端:
1、創建客戶端套接字---分配內存、初始化
2、連接伺服器
3、與伺服器通訊
4、關閉、銷毀客戶端套接字
----------------

Ⅲ 製作伺服器的詳細過程

現在隨著社會的發展互聯網的普及,用上寬頻的用戶也越來越多,很多人也就提出了這樣一個問題,我自己的電腦能不做做一台伺服器呢?答案是懇定的。自己的家庭電腦完全可以做一台web伺服器,或FTP伺服器,關健是方法問題,下面僅就web伺服器的配置介紹一下我自己的一點經驗有關FTP伺服器的配置以後再講(可能還有更好的方法,高手不要笑話我。)

第一步:
操作系統最好是windows2000以上版本,界面比較友好也好操作。在自己的機器上安裝IIS(internet 信息服務)一般默認是安裝的,如果你沒有安裝可以在添加刪除程序裡面安裝。

第二步
配置web伺服器,WWW是World Wide Web的簡稱,它只是Internet的一個組件,它可以在網路上實現圖形服務。使用它,可在你的站點上加入HTML文檔和超鏈接內容,供客戶機和瀏覽器查閱。

1、打開IIS管理器。如圖
http://www.programsky.cn/upload/others/iis_1.gif

大家已經注意到裡面已經存在了默認的Web站點了(hunter是計算機名)。你既可以修改默認的Web站點為你的新站點,也可以重新建立一個新的Web站點。

2、新建一個Web站點
(1)單擊「操作」->「新建」->「Web站點」,就會出現「歡迎使用Web站點創建向導」,然後點擊「下一步」。

(2)提示要輸入關於Web站點的說明,我這里用「編程浪子」描述,除此之外,還要求輸入該Web站點的IP地址,我這里設置為192.168.1.2,埠默認為80,你也可以修改。點擊「下一步」。

(3)要求輸入Web站點的主路徑,路徑一般有三種選擇,這里選擇本地硬碟g:\itocean。點擊「下一步」。

(4)點擊「允許匿名訪問此Web站點」,點擊「下一步」。這一步非常重要。
(5)設置Web站點的訪問許可權。如果你初次使用IIS,請使用默認設置,到此為止,你已經成功地建立了一個新的Web站點。如圖
http://www.programsky.cn/upload/others/iis_2.gif

修改它的Web頁啟動時它會啟用的默認文檔,一般的網頁都默認為index.htm或index.html,請根據你自己的情況修改。在「文檔」欄目里。此時你就可以在IE瀏覽器里輸入192.168.1.2或localhost就可以瀏覽網頁了。
第三步
配置IIS,建立了一個新Web站點後,你還不能使用IIS,你還要配置它。
(1)查看web站點的屬性。
http://www.programsky.cn/upload/others/iis_3.gif

修改它的Web頁啟動時它會啟用的默認文檔,一般的網頁都默認為index.htm或index.html,請根據你自己的情況修改。在「文檔」欄目里。此時你就可以在IE瀏覽器里輸入192.168.1.2或計算機名就可以瀏覽網頁了。

第四步
啟動Web站點。
新建立了Web站點後,你會注意到這個Web站點還沒有啟動。如圖
http://www.programsky.cn/upload/others/iis_4.gif

啟動它,然後在IE地址欄里輸入192.168.1.2或者localhost就可以瀏覽您的網頁內容了。到此一個內部的小型Web伺服器就配置完成了。

當然這些都是最基本的設置,你還可以配置一些關於性能和安全的設置,例如限制帶寬和哪些用戶可以訪問此Web頁等.這里不再一一介紹。

Ⅳ 用java.net進行UDP編程伺服器端和客戶端的流程是怎樣的

伺服器端:
import java.io.*;
import java.net.*;
import java.applet.Applet;
public class TalkServer{
public static void main(String args[]) {
try{
ServerSocket server=null;
try{
server=new ServerSocket(4700);
}catch(Exception e) {
System.out.println("can not listen to:"+e);
}
Socket socket=null;
try{
socket=server.accept();
}catch(Exception e) {
System.out.println("Error."+e);
}
String line;
BufferedReader is=new BufferedReader(new InputStreamReader(socket.getInputStream()));
PrintWriter os=new PrintWriter(socket.getOutputStream());
BufferedReader sin=new BufferedReader(new InputStreamReader(System.in));
System.out.println("Client:"+is.readLine());
line=sin.readLine();
while(!line.equals("bye")){
os.println(line);
os.flush();
System.out.println("Server:"+line);
System.out.println("Client:"+is.readLine());
line=sin.readLine();
}
os.close();
is.close();
socket.close();
server.close();
}catch(Exception e){
System.out.println("Error:"+e);
}
}
}

客戶端:
import java.io.*;
import java.net.*;
public class TalkClient {
public static void main(String args[]) {
try{
Socket socket=new Socket("127.0.0.1",4700);
BufferedReader sin=new BufferedReader(new InputStreamReader(System.in));
PrintWriter os=new PrintWriter(socket.getOutputStream());
BufferedReader is=new BufferedReader(new InputStreamReader(socket.getInputStream()));
String readline;
readline=sin.readLine(); //從系統標准輸入讀入一字元串
while(!readline.equals("bye")){
os.println(readline);
os.flush();
System.out.println("Client:"+readline);
System.out.println("Server:"+is.readLine());
readline=sin.readLine(); //從系統標准輸入讀入一字元串
}
os.close(); //關閉Socket輸出流
is.close(); //關閉Socket輸入流
socket.close(); //關閉Socket
}catch(Exception e) {
System.out.println("Error"+e); //出錯,則列印出錯信息
}
}
}

Ⅳ SOCKET編程實現伺服器端的步驟是什麼

Java版本
1.編寫伺服器端,實例化ServerSocket對象,這里要定義ip和埠,實例化Socket,從ServerSocket對象中accept() 獲取,這里要涉及到流,輸入輸出流在Socket中獲取
2.編寫客戶端,實例化Socket對象,ip,埠,流,在Socket中獲取
如果想要具體代碼,就留言,有空發給你

Ⅵ 安卓問題,如何做伺服器編程如何學起求引導

學則資料庫庫相應的東西,回傳給發送的代碼差不多,你基本可以直接搬運,android也屬於java語言,代碼通用

Ⅶ java網路程序設計中客戶/伺服器程序編寫時基本操作流程是什麼

先創建socket連接對象,在創建讀取數據輸入輸出流對象,如:BufferReader,BufferWriter等,然後再輸出就可以了。

Ⅷ 求JAVA伺服器編程入門教程

沒有單純的伺服器編程的教程,服務端的編程就是java企業級編程,我們通常稱為javaee,包含的內容很多,不是一本教程能夠搞定的,它是一個龐大的知識樹,需要大概幾十本書才能入門,要學精可能上百本書,包含的知識森羅萬象。

Ⅸ C#中TCP進行同步套接字編程,伺服器和客戶端的工作流程(需要代碼和圖)

代碼來了,。。
伺服器:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Net.Sockets;
using System.Net;
using System.Reflection;
using System.Diagnostics;
using System.Text.RegularExpressions;

namespace msgServer
{
public partial class frmServer : Form
{
private Socket socket;
private IPAddress myIP;
private IPEndPoint endPoint;
private int point;
private Socket clientSocket;
private Assembly ass = null;
private System.IO.Stream stream = null;
private System.Media.SoundPlayer pl;
private string txt;
private byte[] bs = new byte[512];
public frmServer()
{
InitializeComponent();
ass = Assembly.GetExecutingAssembly();
stream = ass.GetManifestResourceStream("msgServer.msg.wav");
pl = new System.Media.SoundPlayer(stream);
}

//字體選擇
private void btnFont_Click(object sender, EventArgs e)
{
FontDialog font = new FontDialog();
font.ShowEffects = true;
font.ShowColor = true;
font.MinSize = 12;
font.Font = new Font("楷體_GB2312", 18, FontStyle.Bold);
font.Color = Color.Blue;

if (font.ShowDialog() == DialogResult.OK)
{
rtxtSend.Font = font.Font;
rtxtSend.ForeColor = font.Color;
}

}

//開始監聽
private void btnStart_Click(object sender, EventArgs e)
{
System.Threading.Thread th1 = new System.Threading.Thread(ToConnect);
th1.Start();
}

//去連接
private void ToConnect()
{
try
{
myIP = IPAddress.Parse(txtIP.Text.Trim());//IP
point = Convert.ToInt32(txtPoint.Text.Trim());//Point
endPoint = new IPEndPoint(myIP, point); //終端

socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
socket.Bind(endPoint);//綁定
socket.Listen(3); //最多3人同時連接

lblStatus.Text = "伺服器已經運行...";

clientSocket = socket.Accept();//等待接受
//連接上時
if (clientSocket.Connected)
{
lblStatus.Text = "已經建立連接.";

while (true)
{
try
{
clientSocket.Receive(bs, bs.Length, 0);
pl.Play();
rtxtMsg.AppendText(System.Text.Encoding.Unicode.GetString(bs));
}
catch { lblStatus.Text = "連接已經斷開."; }
}
}
}
catch { txtIP.Focus(); txtIP.SelectAll(); MessageBox.Show("IP error OR Point error"); }
}

//停止監聽
private void btnStop_Click(object sender, EventArgs e)
{
try
{
socket.Close(3);
lblStatus.Text = "監聽已經停止.";
}
catch
{
lblStatus.Text = "目前未建立連接.";
}
}

private void frmServer_KeyPress(object sender, KeyPressEventArgs e)
{

}

private void frmServer_KeyDown(object sender, KeyEventArgs e)
{
if ((e.Control && e.KeyCode == Keys.Enter) || (e.Alt && e.KeyCode == Keys.S))
{
btnSend.PerformClick();//單擊發送
}
}

//發送消息
private void btnSend_Click(object sender, EventArgs e)
{
if (rtxtSend.Text.Trim() == "")
return;
else if (rtxtSend.Text.Trim().ToLower() == "clear()")
{
rtxtMsg.Clear();
rtxtSend.Text = "";
return;
}
else if (Regex.IsMatch(rtxtSend.Text.Trim().ToLower(), @"^[zoom(]+[\d]+[)]$"))
{
string str = rtxtSend.Text.ToLower();
int size = Convert.ToInt32(str.Substring(str.LastIndexOf('(') + 1,
str.IndexOf(')') - str.LastIndexOf('(') - 1));
rtxtMsg.Font = new Font("宋體", size,FontStyle.Bold);
return;
}
else if (Regex.IsMatch(rtxtSend.Text.Trim().ToLower(), @"^[down(]+[\d]+[)]$"))
{
string str = rtxtSend.Text.ToLower();
string size = str.Substring(str.LastIndexOf('(') + 1,str.IndexOf(')') - str.LastIndexOf('(') - 1);

if (Convert.ToInt32(size) > rtxtMsg.Text.Length)
return;

}
else if (Regex.IsMatch(rtxtSend.Text.Trim().ToLower(), @"^[up(]+[\d]+[)]$"))
{
string str = rtxtSend.Text.ToLower();
string size = str.Substring(str.LastIndexOf('(') + 1,str.IndexOf(')') - str.LastIndexOf('(') - 1);

}
else if (rtxtSend.Text.Trim().ToLower() == "exit(0)")
{
this.Close();
return;
}

try
{
byte[] bs = new byte[512];
string user = null;
if (txtUser.Text.Trim() == "在此輸入你的名字" || txtUser.Text.Trim() == "")
{
user = "我";
bs = Encoding.Unicode.GetBytes(string.Format("對方說:({0})\r\n{1}\r\n",DateTime.Now.ToString(), rtxtSend.Text.Trim()));
}
else
{
bs = Encoding.Unicode.GetBytes(string.Format("{0}說:({1})\r\n{2}\r\n", txtUser.Text.Trim(),DateTime.Now.ToString(), rtxtSend.Text.Trim()));
user = txtUser.Text.Trim();
}
clientSocket.Send(bs, bs.Length, 0);//發送
txt = string.Format("{0}說:({1})\r\n{2}\r\n", user, DateTime.Now.ToString(),rtxtSend.Text.Trim());
int tempLen = rtxtMsg.Text.Length;
rtxtMsg.AppendText(txt);
rtxtMsg.Select(tempLen, txt.Length);
rtxtMsg.SelectionFont = new Font("宋體", 10);
rtxtMsg.SelectionColor = Color.Red;
rtxtSend.Clear();
}
catch { MessageBox.Show("未建立連接,無法發送數據!"); }
}

//關閉Socket
private void frmServer_FormClosing(object sender, FormClosingEventArgs e)
{
try
{
//關閉連接
socket.Close(3);
}
catch (Exception) { }
finally
{
foreach (Process p in Process.GetProcesses())
{
if (p.ProcessName == Application.ProctName)
p.Kill();
}
}
}

private void frmServer_Load(object sender, EventArgs e)
{
foreach (Process p in Process.GetProcesses())
{
if (p.ProcessName == Application.ProctName)//已經啟動
{
if (p.Id != Process.GetCurrentProcess().Id)//不是當前進程
{
p.Kill();
}
}
}
}

private void checkBox1_CheckedChanged(object sender, EventArgs e)
{
this.TopMost = checkBox1.Checked;
}
}
}

客戶端:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.Net.Sockets;
using System.Diagnostics;
using System.Text.RegularExpressions;

namespace smgClient
{
public partial class frmClient : Form
{
private IPAddress IP;//ip
private EndPoint endpoint;//point
private Socket socket;//socket
private System.IO.Stream stream = null;
private System.Reflection.Assembly ass = null;
private System.Media.SoundPlayer pl = null;
private string txt;
private byte[] bs = new byte[512];

public frmClient()
{
InitializeComponent();
ass = System.Reflection.Assembly.GetExecutingAssembly();
stream = ass.GetManifestResourceStream("smgClient.msg.wav");
pl = new System.Media.SoundPlayer(stream);
}

//請求連接
private void btnRequestConnect_Click(object sender, EventArgs e)
{
System.Threading.Thread th = new System.Threading.Thread(this.ToConnect);
th.Start();
}

//連接伺服器
private void ToConnect()
{
try
{
IP = IPAddress.Parse(txtIP.Text.Trim());
int point = Convert.ToInt32(txtPoint.Text.Trim());
endpoint = new IPEndPoint(IP, point);
//建立Socket
socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
//建立連接
socket.Connect(endpoint);
//連接成功
lblStatus.Text = "連接成功.";

while (true)
{
socket.Receive(bs, bs.Length, 0);
pl.Play();
rtxtMsg.AppendText(System.Text.Encoding.Unicode.GetString(bs));
}
}
catch (FormatException)
{ MessageBox.Show("IP error OR Point error"); }
catch (ArgumentNullException)
{ MessageBox.Show("IP error OR Point error"); }
catch (Exception)
{
lblStatus.Text = "連接失敗,原因: 伺服器已停止.";
}
}

//字體
private void btnFont_Click(object sender, EventArgs e)
{
FontDialog font = new FontDialog();
font.ShowEffects = true;
font.ShowColor = true;
font.MinSize = 12;
font.Font = new Font("楷體_GB2312", 18, FontStyle.Bold);
font.Color = Color.Blue;

if (font.ShowDialog() == DialogResult.OK)
{
rtxtSend.Font = font.Font;
rtxtSend.ForeColor = font.Color;
}
}

//關閉連接
private void btnCloseConnect_Click(object sender, EventArgs e)
{
try
{
socket.Close();
lblStatus.Text = "連接已經關閉.";
}
catch
{
lblStatus.Text = "目前未建立連接.";
}
}

//發送消息
private void btnSend_Click(object sender, EventArgs e)
{
if (rtxtSend.Text.Trim() == "")
return;
else if (rtxtSend.Text.Trim().ToLower() == "clear()")
{
rtxtMsg.Clear();
rtxtSend.Text = "";
return;
}
else if (Regex.IsMatch(rtxtSend.Text.Trim().ToLower(), @"^[zoom(]+[\d]+[)]$"))
{
string str = rtxtSend.Text.ToLower();
int size = Convert.ToInt32(str.Substring(str.LastIndexOf('(') + 1,
str.IndexOf(')') - str.LastIndexOf('(') - 1));
rtxtMsg.Font = new Font("宋體", size, FontStyle.Bold);
return;
}
else if (Regex.IsMatch(rtxtSend.Text.Trim().ToLower(), @"^[down(]+[\d]+[)]$"))
{
string str = rtxtSend.Text.ToLower();
string size = str.Substring(str.LastIndexOf('(') + 1, str.IndexOf(')') - str.LastIndexOf('(') - 1);

if (Convert.ToInt32(size) > rtxtMsg.Text.Length)
return;

}
else if (Regex.IsMatch(rtxtSend.Text.Trim().ToLower(), @"^[up(]+[\d]+[)]$"))
{
string str = rtxtSend.Text.ToLower();
string size = str.Substring(str.LastIndexOf('(') + 1, str.IndexOf(')') - str.LastIndexOf('(') - 1);

}
else if (rtxtSend.Text.Trim().ToLower() == "exit(0)")
{
this.Close();
return;
}

try
{
byte[] bs = new byte[512];
string user = null;
if (txtUser.Text.Trim() == "在此輸入你的名字" || txtUser.Text.Trim() == "")
{
user = "我";
bs = Encoding.Unicode.GetBytes(string.Format("對方說:({0})\r\n{1}\r\n", DateTime.Now.ToString(),rtxtSend.Text.Trim()));
}
else
{
bs = Encoding.Unicode.GetBytes(string.Format("{0}說:({1})\r\n{2}\r\n", txtUser.Text.Trim(),DateTime.Now.ToString(),rtxtSend.Text.Trim()));
user = txtUser.Text.Trim();
}

socket.Send(bs, bs.Length, 0);//發送

txt = string.Format("{0}說:({1})\r\n{2}\r\n", user, DateTime.Now.ToString(), rtxtSend.Text.Trim());
int tempLen = rtxtMsg.Text.Length;
rtxtMsg.AppendText(txt);
rtxtMsg.Select(tempLen, txt.Length);
rtxtMsg.SelectionFont = new Font("宋體", 10);
rtxtMsg.SelectionColor = Color.Red;
rtxtSend.Clear();
}
catch(Exception ex)
{ MessageBox.Show("連接尚未建立!無法發送數據!" + ex.Message); }
}

//避開打開多個
private void frmClient_Load(object sender, EventArgs e)
{
foreach (Process p in Process.GetProcesses())
{
if (p.ProcessName == Application.ProctName)//有進程
{
if (p.Id != Process.GetCurrentProcess().Id)//不是當前進程
{
p.Kill();
}
}
}
}

private void frmClient_FormClosing(object sender, FormClosingEventArgs e)
{
try
{
socket.Close();
}
catch(Exception) { }
finally
{
foreach (Process p in Process.GetProcesses())
{
if (p.ProcessName == Application.ProctName)
p.Kill();
}
}
}

private void frmClient_KeyDown(object sender, KeyEventArgs e)
{
if ((e.Control && e.KeyCode == Keys.Enter) || (e.Alt && e.KeyCode == Keys.S))
{
btnSend.PerformClick();
}
}

private void checkBox1_CheckedChanged(object sender, EventArgs e)
{
this.TopMost = checkBox1.Checked;
}
}
}

閱讀全文

與伺服器編程流程相關的資料

熱點內容
java定義數據類型 瀏覽:874
安卓pdf手寫 瀏覽:427
什麼是app開發者 瀏覽:284
android鬧鍾重啟 瀏覽:101
程序員失職 瀏覽:518
在雲伺服器怎麼改密碼 瀏覽:586
伺服器pb什麼意思 瀏覽:940
51駕駛員的是什麼app 瀏覽:670
php靜態變數銷毀 瀏覽:886
編程買蘋果電腦 瀏覽:760
flac演算法 瀏覽:497
reactnative與android 瀏覽:663
程序員是干什麼的工作好嗎 瀏覽:258
kbuild編譯ko 瀏覽:469
條件編譯的宏 瀏覽:564
韓語編程語言 瀏覽:646
小程序開發如何租用伺服器 瀏覽:80
怎麼把釘釘文件夾保存到手機里 瀏覽:71
兵法pdf 瀏覽:645
app格式化下載不起怎麼辦 瀏覽:36