A. C# 怎樣才能實現客戶端通過伺服器端連接資料庫伺服器
可以處理的,步驟為:
1.客戶端與伺服器連(用Socket通訊)
2.客戶端向處伺服器發送SQL語句,如搜索一個表的數據
3.伺服器接到請求,執行SQL語句返回一個DataTable
4.伺服器將這個DataTable進行序列化、並且壓縮
5.伺服器將【序列化和壓縮】後的byte[] msg數組傳給客戶端
6.客戶端收到byte[] msg數組先進行解壓縮、和反序列化為DataTable
7.再將DataTable通過DataSet和SqlDataAdapter.Update(Table)存在SQL中
下面我只給一些關鍵的代碼,我有實現過的
第一步.客戶端==》連接伺服器並通訊,主要是發送SQL給伺服器返回一個DataTable表
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.Net.Sockets;
using System.Xml;
using System.Xml.Serialization;
using System.IO;
using System.IO.Compression;
namespace Client
{
public partial class FormClient : Form
{
DataTable dt;
public FormClient()
{
InitializeComponent();
}
private void ClientTest(string str)
{
Socket client;
String returnData;
byte[] buf = new byte[9991024]; //此處可能有些問題
//IPAddress local = IPAddress.Parse("116.25.83.127");
IPAddress local = IPAddress.Parse("127.0.0.1");//可改為遠程IP地址
IPEndPoint iep = new IPEndPoint(local, 6060);
try
{
client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
client.Connect(iep);
}
catch (SocketException)
{
Console.WriteLine("無法連接到伺服器!");
return ;
}
//輸入exit,可以斷開與伺服器的連接
if (str == "")
{
return;
}
//發送SQL語句給伺服器
client.Send(Encoding.Unicode.GetBytes(str));
//得到實際收到的位元組總數
Int32 rec = client.Receive(buf);
Console.WriteLine(Encoding.ASCII.GetString(buf, 0, rec));
//接收伺服器返回的數據
returnData = System.Text.Encoding.Unicode.GetString(buf,0,rec);
//將returnData解壓縮後,再反序列化轉成DataTable dt = DeserializerDataTable(Decompress(returnData));
Console.WriteLine("斷開與伺服器的連接......");
client.Close();
dataGridView1.DataSource = dt;
}
//將DataTable表反序列化
private DataTable DeserializerDataTable(string pXml)
{
StringReader strReader = new StringReader(pXml);
XmlReader xmlReader = XmlReader.Create(strReader);
XmlSerializer serializer = new XmlSerializer(typeof(DataTable));
DataTable dt = serializer.Deserialize(xmlReader) as DataTable;
return dt; }
//給伺服器傳SQL語句
private void buttonSearch_Click(object sender, EventArgs e)
{
string Sql = String.Format("Select top {0} * From Part Where CorpCode_='PT'", textBox1.Text.Trim()); ;
ClientTest(Sql);
}
#region 壓縮和解壓縮
public string Compress(string str)
{
byte[] buffer = Encoding.Unicode.GetBytes(str);
MemoryStream ms = new MemoryStream();
using (GZipStream zip = new GZipStream(ms, CompressionMode.Compress, true))
{
zip.Write(buffer, 0, buffer.Length);
}
ms.Position = 0;
MemoryStream outStream = new MemoryStream();
byte[] compressed = new byte[ms.Length];
ms.Read(compressed, 0, compressed.Length);
byte[] gzBuffer = new byte[compressed.Length + 4];
System.Buffer.BlockCopy(compressed, 0, gzBuffer, 4, compressed.Length);
System.Buffer.BlockCopy(BitConverter.GetBytes(buffer.Length), 0, gzBuffer, 0, 4);
return Convert.ToBase64String(gzBuffer);
}
//解壓縮
public string Decompress(string compressedText)
{
byte[] gzBuffer = Convert.FromBase64String(compressedText);
using (MemoryStream ms = new MemoryStream())
{
int msgLength = BitConverter.ToInt32(gzBuffer, 0);
ms.Write(gzBuffer, 4, gzBuffer.Length - 4);
byte[] buffer = new byte[msgLength];
ms.Position = 0;
using (GZipStream zip = new GZipStream(ms, CompressionMode.Decompress))
{
zip.Read(buffer, 0, buffer.Length);
}
return Encoding.Unicode.GetString(buffer);
}
}
#endregion
}
}
第二步.伺服器收到SQL語句執行,並回傳一個表給客戶端
伺服器接到請求,執行SQL語句返回一個DataTable
伺服器將這個DataTable進行序列化、並且壓縮
伺服器將【序列化和壓縮】後的byte[] msg數組傳給客戶端
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.Net.Sockets; //可以使用套接字
using System.Threading; //可以使用多線程
using System.Data.SqlClient;
using System.Xml;
using System.Xml.Serialization;
using System.IO;
using System.IO.Compression;
namespace AppServer
{
public partial class FormApp : Form
{
public FormApp()
{
InitializeComponent();
}
private void FormApp_Load(object sender, EventArgs e)
{
// AppService instance = new AppService();
}
private void buttonStartService_Click(object sender, EventArgs e)
{
AppService();
}
private Socket server;
private Socket client;
private void AppService()
{
/*
//本機IP
string name = Dns.GetHostName();
IPHostEntry host = Dns.GetHostByName(name);
IPAddress id= host.AddressList[0];
* */
//IPAddress local = IPAddress.Parse("192.168.0.100");
IPEndPoint iep = new IPEndPoint(IPAddress.Any, 6060);
server = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
// 將套接字與本地終結點綁定
server.Bind(iep);
//在本地13000埠號上進行監聽
server.Listen(10);
while (true)
{
// 得到包含客戶端信息的套接字
client = server.Accept();
//創建消息服務線程對象ClientService方法委託給線程
Thread newthread = new Thread(new ThreadStart(ClientService));
// 啟動消息服務線程
newthread.Start();
}
}
private Int32 i;
private void ClientService()
{
Socket s = client;
String data = null;
String returnData = null;
byte[] bytes = new byte[1024];
while ((i = s.Receive(bytes)) != 0)
{
//接收客戶端的SQL
data = System.Text.Encoding.Unicode.GetString(bytes, 0, i);
//將接到的String 執行SQL返回表
DBAccess obj = new DBAccess(); //專門傳給SQL的類相當於DBHELP
DataTable dt = obj.FillData(data, "TEST", 1);//執行SQL返回表
//將返回的表轉為String,並將returnData壓縮
returnData = obj.Compress(obj.SerializeDataTableXml(dt));
byte[] msg = System.Text.Encoding.Unicode.GetBytes(returnData);
// 發送數據表給客戶端 s.Send(msg);
if ((i = s.Receive(bytes)) == 0)
continue;
}
//關閉套接字
s.Close();
}
}
//DBAccess的部份代碼
class DBAccess
{
#region DataTable序列化與反序列化
public string SerializeDataTableXml(DataTable dt)
{
StringBuilder sb = new StringBuilder();
XmlWriter writer = XmlWriter.Create(sb);
XmlSerializer serializer = new XmlSerializer(typeof(DataTable));
serializer.Serialize(writer, dt);
writer.Close();
return sb.ToString(); }
public DataTable DeserializerDataTable(string pXml)
{
StringReader strReader = new StringReader(pXml);
XmlReader xmlReader = XmlReader.Create(strReader);
XmlSerializer serializer = new XmlSerializer(typeof(DataTable));
DataTable dt = serializer.Deserialize(xmlReader) as DataTable;
return dt; }
#endregion
#region 壓縮和解壓縮
public string Compress(string str)
{
byte[] buffer = Encoding.Unicode.GetBytes(str);
MemoryStream ms = new MemoryStream();
using (GZipStream zip = new GZipStream(ms, CompressionMode.Compress, true))
{
zip.Write(buffer, 0, buffer.Length);
}
ms.Position = 0;
MemoryStream outStream = new MemoryStream();
byte[] compressed = new byte[ms.Length];
ms.Read(compressed, 0, compressed.Length);
byte[] gzBuffer = new byte[compressed.Length + 4];
System.Buffer.BlockCopy(compressed, 0, gzBuffer, 4, compressed.Length);
System.Buffer.BlockCopy(BitConverter.GetBytes(buffer.Length), 0, gzBuffer, 0, 4);
return Convert.ToBase64String(gzBuffer);
}
public string Decompress(string compressedText)
{
byte[] gzBuffer = Convert.FromBase64String(compressedText);
using (MemoryStream ms = new MemoryStream())
{
int msgLength = BitConverter.ToInt32(gzBuffer, 0);
ms.Write(gzBuffer, 4, gzBuffer.Length - 4);
byte[] buffer = new byte[msgLength];
ms.Position = 0;
using (GZipStream zip = new GZipStream(ms, CompressionMode.Decompress))
{
zip.Read(buffer, 0, buffer.Length);
}
return Encoding.Unicode.GetString(buffer);
}
}
#endregion
}
第三步.調用DataSet和SqlDataAdapter.Update(Table)存在SQL中,這個是傳入一個DataGridView ,可在客戶端中使用保存(部份代碼,沒有連接SQL資料庫的)
#region 公共保存DataGridView
public bool DataGridViewSave(DataTable table,string tableName,string CorpCode)
{
string Sql = String.Format("Select Top 0 * From {0} Where CorpCode_='{1}' ", tableName, CorpCode);
SqlDataAdapter sda = new SqlDataAdapter(this.CreateCommand(Sql, null, 1));
SqlCommandBuilder scb = new SqlCommandBuilder(sda);
sda.Update(table);
this.Close();
return true;
}
#endregion
B. 用C#如何將兩個界面程序連接到一個伺服器上並可以實時通信
一、摘要
總結基於C#的UDP協議的同步通信。
二、實驗平台
Visual Studio 2010
三、實驗原理
UDP傳輸協議同TCP傳輸協議的區別可查閱相關文檔,此處不再贅述。
四、實例
4.1 採用socket實現UDP
由於UDP是一種無連接的協議。因此,為了使伺服器應用能夠發送和接收UDP數據包,則需要做兩件事情:
(1) 創建一個Socket對象;
(2) 將創建的套接字對象與本地IPEndPoint進行綁定。
完成上述步驟後,那麼創建的套接字就能夠在IPEndPoint上接收流入的UDP數據包,或者將流出的UDP數據包發送到網路中其他任意設備。使用UDP進行通信時,不需要連接。因為異地的主機之間沒有建立連接,所以UDP不能使用標準的Send()和Receive()t套接字方法,而是使用兩個其他的方法:SendTo()和ReceiveFrom()。
SendTo()方法指定要發送的數據,和目標機器的IPEndPoint。該方法有多種不同的使用方法,可以根據具體的應用進行選擇,但是至少要指定數據包和目標機器。如下:
SendTo(byte[] data,EndPoint Remote)
ReceiveFrom()方法同SendTo()方法類似,但是使用EndPoint對象聲明的方式不一樣。利用ref修飾,傳遞的不是一個EndPoint對象,而是將參數傳遞給一個EndPoint對象。
UDP應用不是嚴格意義上的真正的伺服器和客戶機,而是平等的關系,即沒有主與次的關系。為了簡便起見,仍然把下面的這個應用叫做UDP伺服器。
伺服器端代碼:
復制代碼
using System;
using System.Collections.Generic;
using System.Text;
using System.Net;
using System.Net.Sockets;
namespace UDP
{
class Program
{
static void Main(string[] args)
{
int recv;
byte[] data = new byte[1024];
//得到本機IP,設置TCP埠號
IPEndPoint ip = new IPEndPoint(IPAddress.Any, 8001);
Socket newsock = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
//綁定網路地址
newsock.Bind(ip);
Console.WriteLine("This is a Server, host name is {0}", Dns.GetHostName());
//等待客戶機連接
Console.WriteLine("Waiting for a client");
//得到客戶機IP
IPEndPoint sender = new IPEndPoint(IPAddress.Any, 0);
EndPoint Remote = (EndPoint)(sender);
recv = newsock.ReceiveFrom(data, ref Remote);
Console.WriteLine("Message received from {0}: ", Remote.ToString());
Console.WriteLine(Encoding.ASCII.GetString(data, 0, recv));
//客戶機連接成功後,發送信息
string welcome = "你好 ! ";
//字元串與位元組數組相互轉換
data = Encoding.ASCII.GetBytes(welcome);
//發送信息
newsock.SendTo(data, data.Length, SocketFlags.None, Remote);
while (true)
{
data = new byte[1024];
//發送接收信息
recv = newsock.ReceiveFrom(data, ref Remote);
Console.WriteLine(Encoding.ASCII.GetString(data, 0, recv));
newsock.SendTo(data, recv, SocketFlags.None, Remote);
}
}
}
}
復制代碼
對於接收流入的UDP伺服器程序來說,必須將程序與本地系統中指定的UDP埠進行綁定。這就可以通過使用合適的本地IP地址創建一個IPEndPoint對象,以及合適的UDP埠號。上述范常式序中的UDP伺服器能夠在埠8001從網路上接收任意流入的UDP數據包。
UDP客戶機程序與伺服器程序非常類似。
因為客戶機不需要在指定的UDP埠等待流入的數據,因此,不使用Bind()方法,而是使用在數據發送時系統隨機指定的一個UDP埠,而且使用同一個埠接收返回的消息。在開發產品時,要為客戶機指定一套UDP埠,以便伺服器和客戶機程序使用相同的埠號。UDP客戶機程序首先定義一個IPEndPoint,UDP伺服器將發送數據包到這個IPEndPoint。如果在遠程設備上運行UDP伺服器程序,在IPEndPoint定義中必須輸入適當的IP地址和UDP埠號信息。
客戶端代碼:
復制代碼
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.Net.Sockets;
namespace UDPClient
{
class Program
{
static void Main(string[] args)
{
byte[] data = new byte[1024];
string input, stringData;
//構建TCP 伺服器
Console.WriteLine("This is a Client, host name is {0}", Dns.GetHostName());
//設置服務IP,設置TCP埠號
IPEndPoint ip = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 8001);
//定義網路類型,數據連接類型和網路協議UDP
Socket server = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
string welcome = "你好! ";
data = Encoding.ASCII.GetBytes(welcome);
server.SendTo(data, data.Length, SocketFlags.None, ip);
IPEndPoint sender = new IPEndPoint(IPAddress.Any, 0);
EndPoint Remote = (EndPoint)sender;
data = new byte[1024];
//對於不存在的IP地址,加入此行代碼後,可以在指定時間內解除阻塞模式限制
int recv = server.ReceiveFrom(data, ref Remote);
Console.WriteLine("Message received from {0}: ", Remote.ToString());
Console.WriteLine(Encoding.ASCII.GetString(data, 0, recv));
while (true)
{
input = Console.ReadLine();
if (input == "exit")
break;
server.SendTo(Encoding.ASCII.GetBytes(input), Remote);
data = new byte[1024];
recv = server.ReceiveFrom(data, ref Remote);
stringData = Encoding.ASCII.GetString(data, 0, recv);
Console.WriteLine(stringData);
}
Console.WriteLine("Stopping Client.");
server.Close();
}
}
}
復制代碼
上述代碼的實現邏輯為:相關設置完成後,伺服器端先向客戶端發送信息,之後客戶端通過鍵盤發送字元串,伺服器端收到後再發送給客戶端,如此循環。
4.2 採用UDPClient類實現
伺服器端代碼:
復制代碼
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
public class Custom
{
// 設置IP,IPV6
private static readonly IPAddress GroupAddress = IPAddress.Parse("IP地址");
// 設置埠
private const int GroupPort = 11000;
private static void StartListener()
{
bool done = false;
UdpClient listener = new UdpClient();
IPEndPoint groupEP = new IPEndPoint(GroupAddress, GroupPort);
try
{
//IPV6,組播
listener.JoinMulticastGroup(GroupAddress);
listener.Connect(groupEP);
while (!done)
{
Console.WriteLine("Waiting for broadcast");
byte[] bytes = listener.Receive(ref groupEP);
Console.WriteLine("Received broadcast from {0} :\n {1}\n", groupEP.ToString(), Encoding.ASCII.GetString(bytes, 0, bytes.Length));
}
listener.Close();
}
catch (Exception e)
{
Console.WriteLine(e.ToString());
}
}
public static int Main(String[] args)
{
StartListener();
return 0;
}
}
復制代碼
客戶端代碼:
復制代碼
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
public class Client
{
private static IPAddress GroupAddress = IPAddress.Parse("IP地址");
private static int GroupPort = 11000;
private static void Send(String message)
{
UdpClient sender = new UdpClient();
IPEndPoint groupEP = new IPEndPoint(GroupAddress, GroupPort);
try
{
Console.WriteLine("Sending datagram : {0}", message);
byte[] bytes = Encoding.ASCII.GetBytes(message);
sender.Send(bytes, bytes.Length, groupEP);
sender.Close();
}
catch (Exception e)
{
Console.WriteLine(e.ToString());
}
}
public static int Main(String[] args)
{
Send(args[0]);
return 0;
}
}
復制代碼
以上代碼需要說明的是:
(1) 上述代碼是基於IPV6地址的組播模式。IPv4中的廣播(broadcast)可以導致網路性能的下降甚至廣播風暴(broadcast storm)。在IPv6中就不存在廣播這一概念了,取而代之的是組播(multicast)和任意播(anycast)。
(2) IPV6地址表示方法:
a) X:X:X:X:X:X:X:X(每個X代表16位的16進制數字),不區分大小寫;
b) 排頭的0可省略,比如09C0就可以寫成9C0,0000可以寫成0;
c) 連續為0的欄位可以以::來代替,但是整個地址中::只能出現一次,比如FF01:0:0:0:0:0:0:1就可以簡寫成FF01::1。
(3) 如果是採用窗體的形式建議使用這種格式,否則在接收數據時可能會出現死機的現象。
復制代碼
// 創建一個子線程
Thread thread = new Thread(
delegate()
{
try
{
//在這里寫你的代碼
}
catch (Exception )
{
}
}
);
thread.Start();
復制代碼
C. 網站源代碼怎麼用
問題一:網站源碼怎麼使用 一般下載的網站源碼,都有後台管理系統的。沒必要在本地修改。
你直接去不復制上傳到你的空間上去。進入後台添加文章類的管理。你想做動態的話要看你的源碼支持不支持。
問題二:網站源代碼如何在線進行調試? 第一步,調試的准備。
用C#語言編寫一個測試dll文件的程序,由於dll源程序是c的,且運行結果是黑屏的,所以C#代碼也是運行在黑屏的console環境下。完整代碼如下。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;
namespace TestMelp{class Program{[DllImport(@D:\Visual Studio Projects\FileMelp\Debug\FileMelp.dll, CharSet = CharSet.Ansi, CallingConvention = CallingConvention.Cdecl)]
extern static void cmd_melp(int argc, string[] argv);
static void Main(string[] args){string cmd = melp -s -i D:/bin/bit -o D:/bin/output;
string cmd = melp -a -i D:/bin/inputD -o D:/bin/bitRight;
string[] argv = cmd.Split(new char[] { ' ' });
int argc = argv.Length;
cmd_melp(argc, argv);}}}由於調試的FileMelp.dll文件和本程序不在同一個文件夾下,容易出現文件地址問題,所以本測試程序的文件均採用絕對地址。另外cmd的格式要求不能有兩個連續的空格,也可以通過使用Trim函數,解決這個問題。
第二步,定位到自己改寫的帶有源代碼的dll工程。
本文的FileMelp.dll工程,是通過本空間的生成VS dll那篇博客生成的,具體實現方法不在贅述。下面的兩段代碼分別添加到FileMelp工程melp.h和melp.c文件最下面。
#ifndef LIB_H
#define LIB_H
extern _declspec(dllexport) void cmd_melp(int argc, char **argv);
/* 加入任意你想加入的函數定義*/#endifvoid cmd_melp(int argc, char **argv){main(argc,argv);}按F6,上述步驟實現FileMelp.dll動態庫的生成。
第三步,添加測試程序到dll源代碼處。
在FileMelp工程裡面,右擊FileMelp工程,選擇屬性。
或者按Alt+Enter,彈出如下界面。
在Configuration Properties\Debugging\mand選擇第一步生成的測試.exe文件。這樣完成了調試前的准備。接下來,在需要調試的代碼地方,添加斷點。
問題三:怎麼用源碼建立網站 源碼建站的具體操作步驟:
申請虛擬主機(即空間)成功後,就會從官網得到FTP主機名、FTP用戶名和FTP密碼信息,該信息將是上傳網站至內容的唯一憑證;
在網路中搜索「FTP」上傳工具;
安裝並運行「ftpzilla」程序,在程序主界面頂端輸入虛擬主機相關信息,然後點擊「快速連接」按鈕;
此時進行與FTP伺服器之間的通信工作,待連接成功後,就會顯示「連接成功」的提示,同時在「遠程」窗口中會顯示遠程FTP伺服器目錄結構及文件列表信息;
接下來根據FTP伺服器存儲網站文件的相關聲明,進入遠程FTP伺服器「Public-html」目錄,並將該目錄下的所有文件刪除;
在「本地站點」窗口中,定位到網站源碼所在的上傳目錄,選中所有待上傳的文件,右擊從彈出的右鍵菜單中選擇「上傳」項;
此時所有的網站源碼文件將排隊上傳至遠程伺服器「Public-html」目錄下,且可以在狀態窗口中查看當前文件傳輸情況;
當文件上傳完成後,整個上傳網站源碼至空間操作完成,當本地網站源碼被更新後,為了第一時間實現遠程伺服器端數據的同步更新。
問題四:如何在虛擬主機上使用網站源代碼 你指的是什麼意思啊? 如果你上網看到一個很好看的網站,你想看它的源碼,你可以點擊菜單欄查看下找源文件,他會以記事本形式給你打開。 你也可以點擊文件選擇另存為存成頁,下載下來的話你右擊選擇打開方式,選用你機子有的程序,如:記事本,寫字板,還可以選用網頁三劍客中的Dreamweaver打開,如果有Frontpage也可以打開,其實只要可以編輯網站的程序都可以打開,你試試吧,祝你好運!
問題五:怎樣使用瀏覽器查看網頁HTML和CSS源代碼 IE9瀏覽器默認情況下隱藏了瀏覽器菜單欄,因此在打開IE9瀏覽器以後,需要按鍵盤上的ALT鍵來顯示瀏覽器工具欄。
2
在顯示出來的IE菜單欄上點擊菜單「查看」→「源文件」。
3
IE瀏覽器會自動打開一個新的窗口來顯示網頁源代碼。
4
哦~這份緣文件實在太難看懂了~別著急,其實IE9提供了一個更為強大的網頁源代碼查看工具――開發者工具。
點擊IE9瀏覽器右上角的齒輪圖標,在下拉菜單中點擊「F12開發者工具」,或者直接按鍵盤上的快捷鍵F12也可以打開開發者工具。
5
IE9的開發者工具提供更為強大的網頁開發查看代碼和調試功能,你可以使用開發者工具更方便地查看網頁HTML代碼,CSS樣式代碼和腳本等信息。
END
使用Firefox火狐瀏覽器查看網頁源代碼
1
Windows Vista/7用戶:點擊Firefox瀏覽器左上角的快捷菜單,在下拉菜單中點擊「Web開發者」→「查看頁面源代碼」。
Windows XP/Linux用戶:點擊Firefox瀏覽器的菜單「工具」→「Web開發者」→「查看頁面源代碼」。
鍵盤快捷鍵:Ctrl+U
2
Firfox瀏覽器會打開網頁源代碼窗口顯示網頁HTML源代碼。
3
如果想要查看其中外聯的CSS源文件,可以用滑鼠點擊源代碼中的CSS外聯文件鏈接網址。
4
不過自帶的之中網頁源文件查看器並不好用,你可以嘗試使用插件Firebug來獲取更好用的網頁開發功能。
點擊「Web開發者」→「獲取更多工具」。
5
在彈出的Firefox新標簽頁中安裝插件「Firebug」。
6
安裝完成以後會在Firefox瀏覽器的右上角工具欄中添加Firebug的圖標,點擊它就可以使用Firebug網頁調試工具了。
這個工具相當強大哦~
END
使用谷歌Chrome瀏覽器查看網頁源代碼
點擊Chrome瀏覽器右上角的快捷菜單「工具」→「查看源代碼」。
Chrome瀏覽器會打開一個網頁源代碼顯示窗口,這個源代碼顯示窗口好像也是不那麼友好,一大堆網頁代碼實在不知道如何下手呀。
如果你想要更好的網頁源代碼顯示和開發工具,那就點擊Chrome瀏覽器右上角的快捷菜單「工具」→「開發者工具」。
看看,不需要下載任何插件,Chrome瀏覽器就已經為你提供了一個相當強大的網頁開發者工具了。
使用Chrome瀏覽器開發者工具來查看和調試CSS也相當好用。
問題六:怎麼用代碼製作一個網站 由於目前所見即所得類型的工具越來越多,使用也越來越方便,所以製作網頁已經變成了一件輕松的工作,不像以前要手工編寫一行行的源代碼那樣。一般初學者經過短暫的學習就可以學會製作網頁,於是他們認為網頁製作非常簡單,就匆匆忙忙製作自己的網站,可是做出來之後與別人一比,才發現自己的網站非常粗糙,這是為什麼呢?常言道:「性急吃不了熱豆腐」。建立一個網站就像蓋一幢大樓一樣,它是一個系統工程,有自己特定的工作流程,你只有遵循這個步驟,按部就班地一步步來,才能設計出一個滿意的網站。一、確定網站主題網站主題就是你建立的網站所要包含的主要內容,一個網站必須要有一個明確的主題。特別是對於個人網站,你不可能像綜合網站那樣做得內容大而全,包羅萬象。你沒有這個能力,也沒這個精力,所以必須要找准一個自己最感興趣內容,做深、做透,辦出自己的特色,這樣才能給用戶留下深刻的印象。網站的主題無定則,只要是你感興趣的,任何內容都可以,但主題要鮮明,在你的主題范圍內內容做到大而全、精而深。二、搜集材料明確了網站的主題以後,你就要圍繞主題開始搜集材料了。常言道:「巧婦難為無米之炊」。要想讓自己的網站有血有肉,能夠吸引住用戶,你就要盡量搜集材料,搜集得材料越多,以後製作網站就越容易。材料既可以從圖書、報紙、光碟、多媒體上得來,也可以從互聯網上搜集,然後把搜集的材料去粗取精,去偽存真,作為自己製作網頁的素材。三、規劃網站一個網站設計得成功與否,很大程度上決定於設計者的規劃水平,規劃網站就像設計師設計大樓一樣,圖紙設計好了,才能建成一座漂亮的樓房。網站規劃包含的內容很多,如網站的結構、欄目的設置、網站的風格、顏色搭配、版面布局、文字圖片的運用等,你只有在製作網頁之前把這些方面都考慮到了,才能在製作時駕輕就熟,胸有成竹。也只有如此製作出來的網頁才能有個性、有特色,具有吸引力。如何規劃網站的每一項具體內容,我們在下面會有詳細介紹。 四、選擇合適的製作工具盡管選擇什麼樣的工具並不會影響你設計網頁的好壞,但是一款功能強大、使用簡單的軟體往往可以起到事半功倍的效果。網頁製作涉及的工具比較多,首先就是網頁製作工具了,目前大多數網民選用的都是所見即所得的編輯工具,這其中的優秀者當然是Dreamweaver和Frontpage了,如果是初學者,Frontpage2000是首選。除此之外,還有圖片編輯工具,如Photoshop、Photoimpact等;動畫製作工具,如Flash、Cool 3d、Gif Animator等;還有網頁特效工具,如有聲有色等,網上有許多這方面的軟體,你可以根據需要靈活運用。五、製作網頁材料有了,工具也選好了,下面就需要按照規劃一步步地把自己的想法變成現實了,這是一個復雜而細致的過程,一定要按照先大後小、先簡單後復雜來進行製作。所謂先大後小,就是說在製作網頁時,先把大的結構設計好,然後再逐步完善小的結構設計。所謂先簡單後復雜,就是先設計出簡單的內容,然後再設計復雜的內容,以便出現問題時好修改。在製作網頁時要多靈活運用模板,這樣可以大大提高製作效率。六、上傳測試網頁製作完畢,最後要發布到Web伺服器上,才能夠讓全世界的朋友觀看,現在上傳的工具有很多,有些網頁製作工具本身就帶有FTP功能,利用這些FTP工具,你可以很方便地把網站發布到自己申請的主頁存放伺服器上。網站上傳以後,你要在瀏覽器中打開自己的網站,逐頁逐個鏈接的進行測試,發現問題,及時修改,然後再上傳測試。全部測試完畢就可以把你的網址告訴給朋友,讓他們來瀏覽。七、推廣宣傳網頁做好之後,還要不......>>
問題七:如何查看用框架做的網頁源碼 簡單的很,
看到框架中的SRC部分了吧。
把它加上你要看的網站的地址,就OK了。
歡迎訪問我的網站,HTML學習指南。網址在用戶名中。
問題八:怎麼用網頁中的源代碼下載視頻? 看是哪個網站了,如果是下載鏈接直接右擊另存為就OK了。要是網站的源代碼可能需要下載播放器
問題九:網站源碼怎麼用, 可以直接拿來修改使用,
源代碼就是程序和軟體的一切,
問題十:我在網上下載了一個html代碼 我的網站怎麼使用? 那把相對應的文件上傳到你的空間裡面,然後那個無標題文檔是調用的部分,可以把訂碼拷貝出來,放到你想放置的頁面底部就行了。