網路編程與伺服器編程
『壹』 從事C/C++伺服器開發,網路編程方向有什麼好的書籍推薦呢
讀書使人進步,即使工作了,也要經常讀一些經典的書籍來充實自己,作為一名一線開發者,下面將自己覺得不錯的書籍進行推薦。
1.TCP/IP詳解(卷1)
由機械工業出版社出版,一個系列總共三卷,個人感覺卷一足矣。裡面基本涵蓋了網路的方散氏方面面,是我們補充基礎知識的良葯,這里建議大家直接讀英文版,遇到不認識的單詞可以藉助翻譯工具還是很方便的,中文版讀起來總是會有那麼的一點點小別扭。
2.TCP/IP網路編程
人民郵電出版,作者是韓國人,寫的還是很不錯的,可以作為一本很好的入門書籍,文中涉及到Windows和linux兩大平台網路編程基礎知識,並以Linux為主,結尾是以HTTP伺服器實例向我們介紹了網路編程的方方面面,豆瓣評分8.5,不失為一本經典的網路編程書籍。
下面是一本本人親自整理的帶目錄的PDF書籍,如對這岩明本書比較敢興趣,歡迎私信+關注,我會在第一時間發送你。
3.Unix網路編程
APUE、UNP基本上是Linux開發必讀的「聖經」了,Unix網路編程,簡稱UNP,Linux環境下網路編程必讀經典書籍。豆瓣評分飈至9.2,內容簡介已經用到了傳世之作這四個字,經典之處不必多說。內容也是非常的詳盡,可以重點看看工作中常用到的部分,當做案頭書,常來翻翻也是不錯的,這里重點推薦下。
4.Linux多線程服務端編程
電子工業出版社出版,他們家關於IT類的書籍還是很不錯的,作者是大牛陳碩,以其開源的Muo網粗掘告絡庫為基礎,講解了Linux多線程服務端編程的知識,基本屬於進階性質了,閱讀本書,不僅需要你有足夠的C++功底,還有掌握一些C++11的知識,多線程、網路相關知識也是必備技能點。
基本上,看完這幾本書,再加上工作中的實戰,基本可以慢慢獨當一面了。
最後,歡迎大家關注我的頭條號,一個程序員的奮斗史,帶你走進真正的程序員視角,分析IT知識。
『貳』 TCP伺服器和客戶機編程
真費時間呢…… import java.net.ServerSocket;
import java.net.Socket;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintWriter;public class TcpServer {
public static void main(String[] args) {
try {
final int PORT = 8888;
ServerSocket serverSocket = new ServerSocket(PORT);
Socket socket = serverSocket.accept();
InputStream is = socket.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader in = new BufferedReader(isr); OutputStream os = socket.getOutputStream();
PrintWriter out = new PrintWriter(os,true); String line;
while((line = in.readLine()) != null) {
System.out.println("server got msg " + line + " from " + socket.getRemoteSocketAddress());
line = "I am server!";
out.println(line);
System.out.println("server sent size(byte): " + line.getBytes().length);
} out.close();
in.close();
socket.close();
serverSocket.close();
} catch (IOException e) {
System.out.println(e);
System.exit(1);
}
}
}
import java.net.Socket;
import java.net.UnknownHostException;
import java.io.OutputStream;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.io.IOException;public class TcpClient {
public static void main(String[] args) throws IOException {
try {
final String SERVER_ADDRESS = "127.0.0.1";
final int PORT = 8888;
Socket socket = new Socket(SERVER_ADDRESS,PORT); OutputStream os = socket.getOutputStream();
PrintWriter out = new PrintWriter(os,true); InputStream is = socket.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader in = new BufferedReader(isr); String line;
line = "A line sent by the client";
out.println(line); line = in.readLine();
System.out.println("client got: " + line); out.close();
in.close();
socket.close();
} catch (UnknownHostException e) {
System.out.println(e);
} catch (IOException e) {
System.out.println(e);
}
}
}
『叄』 unix/linux網路編程開發和unix/linux伺服器開發有什麼區別
1、unix/linux網路編程是一類編程技術(一般指socket相關的編程)。
2、unix/linux伺服器是一種服務系統(它是指向客戶端提供某種服務的一套應用系統,如ftp伺服器、http伺服器等)。
3、unix/linux伺服器的開發(一套應用系統的開發)通常要用到unix/linux網路編程技術。
『肆』 什麼是網路編程它是做什麼的 是怎樣的工作
通過使用套接字來達到進程間通信目的編程就是網路編程。
代碼,開發工具,資料庫,伺服器架設和網頁設計這5部分你都要接觸
代碼分靜態代碼和動態代碼
靜態代碼是伺服器不解析直接發送給客戶端的部分,用做布局效果,一般不用於資料庫操作
靜態代碼分html,javascript,css等,其中html語言是基礎,要學網路編程就先學html語言.javascript用於實現某些特效,css是樣式語言.這3個語言組合起來,可以設計出美妙的網頁效果
動態代碼是伺服器需要解析的部分,用作資料庫連接操作等.有php,jsp,asp和asp.net.這幾種語言你只用先學一種就可.如果是想快速入門,建議先學asp,如果想學了找工作等,建議學php或jsp,
開發工具有很多種,我推薦一種,網路3劍客,其中dw是開發代碼的,fw是做圖的.flash是做動畫的.
資料庫要結合你學的動態語言來選擇,asp和asp.net系列的,你可以使用access,大型點使用mssql.
php和mysql是很好的搭檔.
伺服器架設也是結合你學的動態語言的,windows下安裝iis很方便,iis可以運行asp,安裝.net框架後能運行asp.net.這兩者架設相對簡單,也是我推薦你入門學asp的原因.php一般安裝apache伺服器,jsp一般安裝tomat伺服器.只有架設好伺服器,才能瀏覽動態語言編寫的程序.
雖然是編程,但是總會涉及到網頁設計部分,還是要去學學怎麼簡單的作圖和動畫。
『伍』 c++網路編程的伺服器和客戶端是怎麼回事
伺服器就是一個程序,時刻准備接收網路上其他計算機(或本機)上的某些程序發出的指令(字元串),然後按照指令完成某些工作。例如,你做了一個程序,准備接收字元串(sell,001A,5,3),這個串表示:銷售001A編號的商品,單價5元,賣了3個,然後把這個信息以某種格式存入文件,以便以後作為統計依據。那麼給這個伺服器發串的大概就是一個收銀台的pos機,上面運行著圖形界面,在收款員的確定按鈕按下時,發出了這筆交易串。這個pos機運行的就是客戶端程序。
伺服器程序需要時刻運行,時刻准備接收各種類型請求並處理。客戶端程序隨便一些,隨時運行一次也可以。
如果客戶端非常多時,伺服器程序就忙不過來了,就需要進程池、線程池等排隊演算法緩解壓力,也可以把各個請求以某種分類發送給不同伺服器來緩解壓力,總之方法有很多,都是伺服器開發的重點。
『陸』 什麼是網路編程什麼是系統編程跟普通編程有什麼區別如果編程入門應該學哪種
網路編程主要是針對網頁上的應用程序來編寫的一些嵌入式程序。比如說JSP動態網頁,就是在網頁中結合了JAVA的APPLET編程技術的網頁。主要應用語言為JAVA。
系統編程就是針對系統的一些開發,比如管理一個圖書館的系統等等,系統編程需要結合資料庫和數據結構的相關演算法來實現程序的效果。比如C++語言,就適合於系統開發。還有就是硬體驅動程序的開發,也跟系統編程有關系。
編程入門啊,呵呵,這就要看你自己了噻。當然,初學編程最好不要學習面對對象的肆高編程,例如JAVA\c#\.net等語言。最好型寬的就裂租尺是先學習面對過程的編程,比如標准C,這是最基礎的,用來培養編程的思維,學習基本的語法和基礎的經典的演算法。然後就向JAVA、C++、.net等方向發展。
『柒』 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");
}
}
『捌』 什麼是伺服器端編程,什麼是客戶端編程,舉兩個例子。Java Web編程跟Android的網路編程有什麼區別!
伺服器端和客戶端的區別在於在哪兒運行。如果在客戶手中(比如用筆記本的瀏覽器瀏覽網頁,用手機如Android玩一些和網路相關的程序等),這個叫客戶端。
當然java web變成是伺服器端的,因為他的運行不在你的電腦上或者你的手機上。你瀏覽網頁或者玩網路游戲的時候,客戶端會通過網頁和伺服器端連接。