導航:首頁 > 配伺服器 > java如何自創伺服器

java如何自創伺服器

發布時間:2022-08-06 06:06:40

『壹』 java怎麼搭建伺服器

開通伺服器後通過ftp上傳程序,搭建好就行了,有些鏡像需要自己搭,很多雲伺服器都是現成的環境,直接部署就好了

『貳』 java編寫一個客戶/伺服器程序

下面是我自己寫的一個讀取並顯示txt文件的demo,希望對您有幫助。
public class Client {
public static void main(String[] args) {
ClientFrame f = new ClientFrame();
}
}

import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Vector;

import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;

public class ClientFrame extends JFrame implements ActionListener, ListSelectionListener{
private JList list = null;
private JButton sbtn = null;
private JButton cbtn = null;
private Vector v = null;
private JTextArea txt = null;
private Container control = null;
private Container btn = null;
private Socket client = null;
private DataInputStream reader = null;
private DataOutputStream writer = null;

public ClientFrame(){
this.list = new JList();
this.list.setBorder(BorderFactory.createTitledBorder("文件列表"));
this.list.addListSelectionListener(this);

this.sbtn = new JButton("顯示");
this.sbtn.addActionListener(this);
this.cbtn = new JButton("清除");
this.cbtn.addActionListener(this);

this.control = new Container();
this.control.setPreferredSize(new Dimension(150, 400));
this.control.setLayout(new BorderLayout());
this.control.add(new JScrollPane(this.list),BorderLayout.CENTER);
this.btn = new Container();
this.btn.setLayout(new GridLayout(1,2));
btn.add(sbtn);
btn.add(cbtn);
this.control.add(this.btn,BorderLayout.SOUTH);

this.txt = new JTextArea();
this.txt.setEditable(false);
this.txt.setSize(350, 400);

this.setTitle("客戶端");
this.setSize(500, 400);
this.setVisible(true);
Dimension displaySize = Toolkit.getDefaultToolkit().getScreenSize();
this.setLocation((displaySize.width - this.getWidth()) / 2, (displaySize.height - this.getHeight()) / 2);
this.setLayout(new BorderLayout());
this.add(this.control,BorderLayout.WEST);
this.add(new JScrollPane(this.txt),BorderLayout.CENTER);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

try {
//this.client = new Socket("192.168.32.34",6666);
this.client = new Socket("192.168.1.100",6666);
this.reader = new DataInputStream(client.getInputStream());
this.writer = new DataOutputStream(client.getOutputStream());
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}

public void actionPerformed(ActionEvent event){
if(event.getSource() == sbtn){
if(v == null){
v = new Vector();
}
else{
v.clear();
}

try {
writer.writeUTF("getfilelist");
writer.flush();
String t = reader.readUTF();
while( t != null && !t.equals("")){
v.add(t);
t = reader.readUTF();
}
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
this.list.setListData(v);
}

if(event.getSource() == cbtn){
this.txt.setText("");
}
}

public void valueChanged(ListSelectionEvent e) {
int i = this.list.getSelectedIndex();
if (! this.list.getValueIsAdjusting() && i != -1) {
try {
writer.writeUTF("getfilecontent_" + i);
writer.flush();
String tmp = reader.readUTF();
this.txt.setText(tmp);
} catch (IOException e1) {
e1.printStackTrace();
}
}
}

}

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.Reader;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.ArrayList;
import java.util.Iterator;

public class Server {
static ArrayList<File> fileArray = new ArrayList<File>();
public static void main(String args[]) {
ServerSocket server = null;
Socket client = null;
String cmd = "";
try {
server = new ServerSocket(6666);
client = server.accept();

DataInputStream reader = new DataInputStream(client.getInputStream());
DataOutputStream writer = new DataOutputStream(client.getOutputStream());

while(true){
cmd = reader.readUTF();
System.out.println(cmd);
if(cmd.equals("getfilelist")){
fileArray.clear();
//fileArray = getFile(new File("D:/tmp"));
fileArray = getFile(new File("D:/學習/教程/學習筆記"));
String fn = "";
for(int k = 0; k < fileArray.size(); k ++){
fn = fileArray.get(k).getName();
writer.writeUTF(fn);
writer.flush();
}
writer.writeUTF("");
}
if(cmd.startsWith("getfilecontent_")){
int i = Integer.parseInt(cmd.split("_")[1]);
File f = fileArray.get(i);
Reader in = new InputStreamReader(new FileInputStream(f));
int tempbyte;
String str = "";
while ((tempbyte = in.read()) != -1) {
str += (char)tempbyte;
//System.out.println(str);
}
in.close();
writer.writeUTF(str);
}
}

} catch (IOException e) {
e.printStackTrace();
}
}

private static ArrayList<File> getFile(File f) {
File[] ff = f.listFiles();
for (File child : ff) {
if (child.isDirectory()) {
getFile(child);
} else {
fileArray.add(child);
}
}
return fileArray;
}
}

『叄』 如何用Java實現Web伺服器

如何用Java實現Web伺服器 一、HTTP協議的作用原理

WWW是以Internet作為傳輸媒介的一個應用系統,WWW網上最基本的傳輸單位是Web網頁。WWW的工作基於客戶機/伺服器計算模型,由Web 瀏覽器(客戶機)和Web伺服器(伺服器)構成,兩者之間採用超文本傳送協議(HTTP)進行通信。HTTP協議是基於TCP/IP協議之上的協議,是Web瀏覽器和Web伺服器之間的應用層協議,是通用的、無狀態的、面向對象的協議。HTTP協議的作用原理包括四個步驟:

(1) 連接:Web瀏覽器與Web伺服器建立連接,打開一個稱為socket(套接字)的虛擬文件,此文件的建立標志著連接建立成功。

(2) 請求:Web瀏覽器通過socket向Web伺服器提交請求。HTTP的請求一般是GET或POST命令(POST用於FORM參數的傳遞)。GET命令的格式為:

GET 路徑/文件名 HTTP/1.0

文件名指出所訪問的文件,HTTP/1.0指出Web瀏覽器使用的HTTP版本。

(3) 應答:Web瀏覽器提交請求後,通過HTTP協議傳送給Web伺服器。Web伺服器接到後,進行事務處理,處理結果又通過HTTP傳回給Web瀏覽器,從而在Web瀏覽器上顯示出所請求的頁面。

例:假設客戶機與www.mycompany.com:8080/mydir/index.html建立了連接,就會發送GET命令:GET /mydir/index.html HTTP/1.0.主機名為www.mycompany.com的Web伺服器從它的文檔空間中搜索子目錄mydir的文件index.html.如果找到該文件,Web伺服器把該文件內容傳送給相應的Web瀏覽器。

為了告知 Web瀏覽器傳送內容的類型,Web伺服器首先傳送一些HTTP頭信息,然後傳送具體內容(即HTTP體信息),HTTP頭信息和HTTP體信息之間用一個空行分開。

常用的HTTP頭信息有:

① HTTP 1.0 200 OK

這是Web伺服器應答的第一行,列出伺服器正在運行的HTTP版本號和應答代碼。代碼「200 OK」表示請求完成。

② MIME_Version:1.0

它指示MIME類型的版本。

③ content_type:類型

這個頭信息非常重要,它指示HTTP體信息的MIME類型。如:content_type:text/html指示傳送的數據是HTML文檔。

④ content_length:長度值

它指示HTTP體信息的長度(位元組)。

(4) 關閉連接:當應答結束後,Web瀏覽器與Web伺服器必須斷開,以保證其它Web瀏覽器能夠與Web伺服器建立連接。

二、Java實現Web伺服器功能的程序設計

根據上述HTTP協議的作用原理,實現GET請求的Web伺服器程序的方法如下:

(1) 創建ServerSocket類對象,監聽埠8080.這是為了區別於HTTP的標准TCP/IP埠80而取的;

(2) 等待、接受客戶機連接到埠8080,得到與客戶機連接的socket;

(3) 創建與socket字相關聯的輸入流instream和輸出流outstream;

(4) 從與socket關聯的輸入流instream中讀取一行客戶機提交的請求信息,請求信息的格式為:GET 路徑/文件名 HTTP/1.0

(5) 從請求信息中獲取請求類型。如果請求類型是GET,則從請求信息中獲取所訪問的HTML文件名。沒有HTML文件名時,則以index.html作為文件名;

(6) 如果HTML文件存在,則打開HTML文件,把HTTP頭信息和HTML文件內容通過socket傳回給Web瀏覽器,然後關閉文件。否則發送錯誤信息給Web瀏覽器;

(7) 關閉與相應Web瀏覽器連接的socket字。

下面的程序是根據上述方法編寫的、可實現多線程的Web伺服器,以保證多個客戶機能同時與該Web伺服器連接。

程序1:WebServer.java文件

//WebServer.java 用JAVA編寫Web伺服器

import java.io.*;

import java.net.*;

public class WebServer {

public static void main(String args[]) {

int i=1, PORT=8080;

ServerSocket server=null;

Socket client=null;

try {

server=new ServerSocket(PORT);

System.out.println("Web Server is listening on port "+server.getLocalPort());

for (;;) {client=server.accept(); //接受客戶機的連接請求

new ConnectionThread(client,i)。start();

i++;

}

} catch (Exception e) {System.out.println(e);}

}

}

/* ConnnectionThread類完成與一個Web瀏覽器的通信 */

class ConnectionThread extends Thread {

Socket client; //連接Web瀏覽器的socket字

int counter; //計數器

public ConnectionThread(Socket cl,int c) {

client=cl;

counter=c;

}

public void run() //線程體

{try {

String destIP=client.getInetAddress()。toString(); //客戶機IP地址

int destport=client.getPort(); //客戶機埠號

System.out.println("Connection "+counter+":connected to "+destIP+" on port "+destport+".");

PrintStream outstream=new PrintStream(client.getOutputStream());

DataInputStream instream=new DataInputStream(client.getInputStream());

String inline=instream.readLine(); //讀取Web瀏覽器提交的請求信息

System.out.println("Received:"+inline);

if (getrequest(inline)) { //如果是GET請求

String filename=getfilename(inline);

File file=new File(filename);

if (file.exists()) { //若文件存在,則將文件送給Web瀏覽器

System.out.println(filename+" requested.");

outstream.println("HTTP/1.0 200 OK");

outstream.println("MIME_version:1.0");

outstream.println("Content_Type:text/html");

int len=(int)file.length();

outstream.println("Content_Length:"+len);

outstream.println("");

sendfile(outstream,file); //發送文件

outstream.flush();

} else { //文件不存在時

String notfound="

Error 404-file not found
";

outstream.println("HTTP/1.0 404 no found");

outstream.println("Content_Type:text/html");

outstream.println("Content_Length:"+notfound.length()+2);

outstream.println("");

outstream.println(notfound);

outstream.flush();

}

http://java.chinaitlab.com/advance/519981.html

『肆』 用java編寫,如何去架構一個伺服器啊先聲明不是web伺服器,是一個通信伺服器。

別亂說,首先搞清楚什麼叫服務端,什麼叫客戶端,main是程序入口,不叫伺服器。
比如,客戶端往伺服器端使用socket通信往服務端傳一個 Jason 密碼123,
伺服器端返回 hello Jason。
這才叫伺服器,學學socket通信,寫個簡單程序就能明白

『伍』 如何用JAVA開發游戲伺服器

隨著游戲市場的興起,特別是網頁游戲、手機游戲的崛起,對游戲開發技術的需求越來越多。網路游戲開發是一個龐大的體系,總體來說是客戶端與伺服器端。客戶端是玩家接觸的游戲圖像顯示端,伺服器是處理游戲運行中的各種數據,由於一台伺服器要支持眾多玩家的請求,所以伺服器的性能高低決定了同一個游戲的用戶數量。

主要原因是:

1.Java是跨平台的,方便部署;

2.Java是安全的高級語言,可以提高開發效率;

3.Java是面向對象的,代碼可以重用;

4.Java的分布式應用

『陸』 如何用Java實現FTP伺服器

在主函數中,完成伺服器埠的偵聽和服務線程的創建。我們利用一個靜態字元串變數initDir 來保存伺服器線程運行時所在的工作目錄。伺服器的初始工作目錄是由程序運行時用戶輸入的,預設為C盤的根目錄。
具體的代碼如下:
public class ftpServer extends Thread{
private Socket socketClient;
private int counter;
private static String initDir;
public static void main(String[] args){
if(args.length != 0) {
initDir = args[0];
}else{ initDir = "c:";}
int i = 1;
try{
System.out.println("ftp server started!");
//監聽21號埠
ServerSocket s = new ServerSocket(21);
for(;;){
//接受客戶端請求
Socket incoming = s.accept();
//創建服務線程
new ftpServer(incoming,i).start();
i++;
}
}catch(Exception e){}
}

『柒』 怎麼用java創建一個web伺服器

你說的java創建web伺服器的意思是,寫出java代碼在伺服器上運行嗎,使用的伺服器是tomcat就行了,代碼的話你就去收一下java web簡單實例應該可以找到對應的簡單的java web的代碼。

『捌』 編寫代碼,使用java ServerSocket創建伺服器端ServerSocket的過程。

packagesocket;

importjava.io.BufferedReader;
importjava.io.IOException;
importjava.io.InputStreamReader;
importjava.io.PrintWriter;
importjava.net.ServerSocket;
importjava.net.Socket;

publicclassSocketService{
//搭建伺服器端
publicstaticvoidmain(String[]args)throwsIOException{
SocketServicesocketService=newSocketService();
//1、a)創建一個伺服器端Socket,即SocketService
socketService.oneServer();
}
publicvoidoneServer(){
try{
ServerSocketserver=null;
try{
server=newServerSocket(5209);
//b)指定綁定的埠,並監聽此埠。
System.out.println("伺服器啟動成功");
//創建一個ServerSocket在埠5209監聽客戶請求
}catch(Exceptione){
System.out.println("沒有啟動監聽:"+e);
//出錯,列印出錯信息
}
Socketsocket=null;
try{
socket=server.accept();
//2、調用accept()方法開始監聽,等待客戶端的連接
//使用accept()阻塞等待客戶請求,有客戶
//請求到來則產生一個Socket對象,並繼續執行
}catch(Exceptione){
System.out.println("Error."+e);
//出錯,列印出錯信息
}
//3、獲取輸入流,並讀取客戶端信息
Stringline;
BufferedReaderin=newBufferedReader(newInputStreamReader(socket.getInputStream()));
//由Socket對象得到輸入流,並構造相應的BufferedReader對象
PrintWriterwriter=newPrintWriter(socket.getOutputStream());
//由Socket對象得到輸出流,並構造PrintWriter對象
BufferedReaderbr=newBufferedReader(newInputStreamReader(System.in));
//由系統標准輸入設備構造BufferedReader對象
System.out.println("Client:"+in.readLine());
//在標准輸出上列印從客戶端讀入的字元串
line=br.readLine();
//從標准輸入讀入一字元串
//4、獲取輸出流,響應客戶端的請求
while(!line.equals("end")){
//如果該字元串為"bye",則停止循環
writer.println(line);
//向客戶端輸出該字元串
writer.flush();
//刷新輸出流,使Client馬上收到該字元串
System.out.println("Server:"+line);
//在系統標准輸出上列印讀入的字元串
System.out.println("Client:"+in.readLine());
//從Client讀入一字元串,並列印到標准輸出上
line=br.readLine();
//從系統標准輸入讀入一字元串
}//繼續循環

//5、關閉資源
writer.close();//關閉Socket輸出流
in.close();//關閉Socket輸入流
socket.close();//關閉Socket
server.close();//關閉ServerSocket
}catch(Exceptione){//出錯,列印出錯信息
System.out.println("Error."+e);
}
}
}

『玖』 我想學java,學習它要在電腦上建個伺服器,電腦需要什麼配置才能滿足最好具體點

除非你想把你的電腦搭建成高訪問流量的伺服器
不然用一般的電腦就可以了 可以運行eclipse,tomcat oracle就行了 別的沒有要求 內存最好高點 2個G應該可以!

幫你查了下IBMR52配置。。

CPU類型:迅馳二代
CPU頻率:1.73GHz 支持SPEED STEP 支持
內存:DDR2 2G
硬碟容量:120GB
光碟機類型:康寶(DVD-CO)
顯示屏尺寸:14.1英寸
顯示屏解析度:1024*768
顯示晶元:INTEL 915
顯存容量:128MB
網卡:千兆網卡 +54M無線網卡
PCMCIA槽數:2個(一個一代、一個二代)
指取設備:IBM ThinkPad UltraNav
I/O介面:麥克風插孔、耳機插孔、MODEM插孔、網卡介面,視頻輸出介面,兩個USB介面.列印機介面
隨機附件:A/C適配器
操作系統:Windows XP
附帶軟體:常用軟體

太行了!顯卡稍微差點 不過一點影響沒有!
加油學吧!

『拾』 如何創建基本的Java伺服器

以下是Sun提供的一個簡單的「Knock Knock"」伺服器:
import java.net.*;import java.io.*;public class KnockKnockServer {
public static void main(String[] args) throws IOException {
ServerSocket serverSocket = null;
try {
serverSocket = new ServerSocket(4444);
} catch (IOException e) {
System.err.println("Could not listen on port: 4444.");
System.exit(1);
}
Socket clientSocket = null;
try {
clientSocket = serverSocket.accept();
} catch (IOException e) {
System.err.println("Accept failed.");
System.exit(1);
}
PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);
BufferedReader in = new BufferedReader(
new InputStreamReader(
clientSocket.getInputStream()));
String inputLine, outputLine;
KnockKnockProtocol kkp = new KnockKnockProtocol();
outputLine = kkp.processInput(null);
out.println(outputLine);
while ((inputLine = in.readLine()) != null) {
outputLine = kkp.processInput(inputLine);
out.println(outputLine);
if (outputLine.equals("Bye."))
break;
}
out.close();
in.close();
clientSocket.close();
serverSocket.close();
}}
再簡單不過了。

閱讀全文

與java如何自創伺服器相關的資料

熱點內容
核心編程為什麼要變數 瀏覽:702
學動漫編程就業行情好嗎 瀏覽:162
python連接多個類 瀏覽:594
退app會員費找哪裡投訴 瀏覽:564
射擊pdf 瀏覽:81
python多張圖片拼接與層疊 瀏覽:977
河北廊坊電信dns伺服器地址 瀏覽:849
老股民指標源碼 瀏覽:30
偉福顯示未安裝編譯器什麼意思呢 瀏覽:233
拉伸命令cad 瀏覽:489
yy安卓怎麼搶麥 瀏覽:932
阿里雲共享型伺服器價格 瀏覽:442
壓縮機效率低 瀏覽:54
python讀取excel製作直方圖 瀏覽:485
這周遊源碼 瀏覽:179
安卓手機圖標怎麼變成一樣的 瀏覽:358
pythongui選擇文件 瀏覽:483
預付APP哪個部門管理 瀏覽:612
程序員入門英語聽力 瀏覽:129
伺服器網站被大量不明地址訪問 瀏覽:377