java實現(xiàn)服務端代碼 java服務器代碼

用java代碼實現(xiàn)客戶端與服務端建立連接?

套接字 Socket

網站建設哪家好,找創(chuàng)新互聯(lián)!專注于網頁設計、網站建設、微信開發(fā)、重慶小程序開發(fā)、集團企業(yè)網站建設等服務項目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了黃州免費建站歡迎大家使用!

import java.net.*;

Server:

ServerSocket server=new ServerSocket(port);//port是端口

Socket socket=server.accept();

//等待客戶機的連接請求,若連接,則創(chuàng)建一套接字,并將返回。

Client:

Socket socket=new Socket("host",port);//host主機名(本機:127.0.0.1)

用java多線程實現(xiàn)服務器與客戶端之間的文件傳輸?shù)拇a?。。〖保。。?!

程序分Server和Client

服務器端打開偵聽的端口,一有客戶端連接就創(chuàng)建兩個新的線程來負責這個連接

一個負責客戶端發(fā)送的信息(ClientMsgCollectThread 類),

另一個負責通過該Socket發(fā)送數(shù)據(jù)(ServerMsgSendThread )

Server.java代碼如下:

/*

* 創(chuàng)建日期 2009-3-7

*

* TODO 要更改此生成的文件的模板,請轉至

* 窗口 - 首選項 - Java - 代碼樣式 - 代碼模板

*/

package faue.MutiUser;

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStreamReader;

import java.io.PrintWriter;

import java.net.ServerSocket;

import java.net.Socket;

/**

* 服務器端

*

* @author Faue

*/

public class Server extends ServerSocket {

private static final int SERVER_PORT = 10000;

/**

* 構造方法,用于實現(xiàn)連接的監(jiān)聽

*

* @throws IOException

*/

public Server() throws IOException {

super(SERVER_PORT);

try {

while (true) {

Socket socket = super.accept();

new Thread(new ClientMsgCollectThread(socket), "getAndShow"

+ socket.getPort()).start();

new Thread(new ServerMsgSendThread(socket), "send"

+ socket.getPort()).start();

}

} catch (IOException e) {

e.printStackTrace();

}

}

public static void main(String[] args) throws IOException {

new Server();

}

/**

* 該類用于創(chuàng)建接收客戶端發(fā)來的信息并顯示的線程

*

* @author Faue

* @version 1.0.0

*/

class ClientMsgCollectThread implements Runnable {

private Socket client;

private BufferedReader in;

private StringBuffer inputStringBuffer = new StringBuffer("Hello");

/**

* 得到Socket的輸入流

*

* @param s

* @throws IOException

*/

public ClientMsgCollectThread(Socket s) throws IOException {

client = s;

in = new BufferedReader(new InputStreamReader(client

.getInputStream(), "GBK"));

}

public void run() {

try {

while (!client.isClosed()) {

inputStringBuffer.delete(0, inputStringBuffer.length());

inputStringBuffer.append(in.readLine());

System.out.println(getMsg(inputStringBuffer.toString()));

}

} catch (IOException e) {

//e.printStackTrace();

System.out.println(client.toString() + " is closed!");

}

}

/**

* 構造顯示的字符串

*

* @param line

* @return

*/

private String getMsg(String line) {

return client.toString() + " says:" + line;

}

}

/**

* 該類用于創(chuàng)建發(fā)送數(shù)據(jù)的線程

*

* @author Faue

* @version 1.0.0

*/

class ServerMsgSendThread implements Runnable {

private Socket client;

private PrintWriter out;

private BufferedReader keyboardInput;

private StringBuffer outputStringBuffer = new StringBuffer("Hello");

/**

* 得到鍵盤的輸入流

*

* @param s

* @throws IOException

*/

public ServerMsgSendThread(Socket s) throws IOException {

client = s;

out = new PrintWriter(client.getOutputStream(), true);

keyboardInput = new BufferedReader(new InputStreamReader(System.in));

}

public void run() {

try {

while (!client.isClosed()) {

outputStringBuffer.delete(0, outputStringBuffer.length());

outputStringBuffer.append(keyboardInput.readLine());

out.println(outputStringBuffer.toString());

}

} catch (IOException e) {

//e.printStackTrace();

System.out.println(client.toString() + " is closed!");

}

}

}

}

客戶端:

實現(xiàn)基于IP地址的連接,連接后也創(chuàng)建兩個線程來實現(xiàn)信息的發(fā)送和接收

/*

* 創(chuàng)建日期 2009-3-7

*

*/

package faue.MutiUser;

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStreamReader;

import java.io.PrintWriter;

import java.net.Socket;

/**

* 客戶端

*

* @author Faue

*/

public class Client {

private Socket mySocket;

/**

* 創(chuàng)建線程的構造方法

*

* @param IP

* @throws IOException

*/

public Client(String IP) throws IOException {

try {

mySocket = new Socket(IP, 10000);

new Thread(new ServerMsgCollectThread(mySocket), "getAndShow"

+ mySocket.getPort()).start();

new Thread(new ClientMsgSendThread(mySocket), "send"

+ mySocket.getPort()).start();

} catch (IOException e) {

//e.printStackTrace();

System.out.println("Server.IP:" + IP

+ " port:10000 can not be Connected");

}

}

public static void main(String[] args) throws IOException {

try {

new Client(args[0]);

} catch (Exception e) {

System.out.println("輸入的IP地址錯誤");

}

}

/**

* 該類用于創(chuàng)建接收服務端發(fā)來的信息并顯示的線程

*

* @author Faue

* @version 1.0.0

*/

class ServerMsgCollectThread implements Runnable {

private Socket client;

private BufferedReader in;

private StringBuffer inputStringBuffer = new StringBuffer("Hello");

/**

* 得到Socket的輸入流

*

* @param s

* @throws IOException

*/

public ServerMsgCollectThread(Socket s) throws IOException {

client = s;

in = new BufferedReader(new InputStreamReader(client

.getInputStream(), "GBK"));

}

public void run() {

try {

while (!client.isClosed()) {

inputStringBuffer.delete(0, inputStringBuffer.length());

inputStringBuffer.append(in.readLine());

System.out.println(getMsg(inputStringBuffer.toString()));

}

} catch (IOException e) {

//e.printStackTrace();

System.out.println(client.toString() + " is closed!");

System.exit(0);

}

}

/**

* 構造輸入字符串

*

* @param line

* @return

*/

private String getMsg(String line) {

return client.toString() + " says:" + line;

}

}

/**

* 該類用于創(chuàng)建發(fā)送數(shù)據(jù)的線程

*

* @author Faue

* @version 1.0.0

*/

class ClientMsgSendThread implements Runnable {

private Socket client;

private PrintWriter out;

private BufferedReader keyboardInput;

private StringBuffer outputStringBuffer = new StringBuffer("Hello");

/**

* 得到鍵盤的輸入流

*

* @param s

* @throws IOException

*/

public ClientMsgSendThread(Socket s) throws IOException {

client = s;

out = new PrintWriter(client.getOutputStream(), true);

keyboardInput = new BufferedReader(new InputStreamReader(System.in));

}

public void run() {

try {

while (!client.isClosed()) {

outputStringBuffer.delete(0, outputStringBuffer.length());

outputStringBuffer.append(keyboardInput.readLine());

out.println(outputStringBuffer.toString());

}

out.println("--- See you, bye! ---");

} catch (IOException e) {

//e.printStackTrace();

System.out.println(client.toString() + " is closed!");

System.exit(0);

}

}

}

}

如果對您有幫助,請記得采納為滿意答案,謝謝!祝您生活愉快!

vaela

關于java,soap服務器端的代碼怎么寫

soapenv:Header/

soapenv:Body

api:getEmp

shopIdstring/shopId

/api:getEmp

/soapenv:Body

/soapenv:Envelope

這個時SOAP協(xié)議的標準報文格式,客戶端只要發(fā)送這樣的報文給支持SOAP協(xié)議的webservice服務器即可成功調用web service服務

服務端:部署服務只需要自己定義服務的接口和實現(xiàn)類,并用@webservice注解,通過endPoint類直接發(fā)布即可

編寫代碼,使用java ServerSocket創(chuàng)建服務器端ServerSocket的過程。

package?socket;

import?java.io.BufferedReader;

import?java.io.IOException;

import?java.io.InputStreamReader;

import?java.io.PrintWriter;

import?java.net.ServerSocket;

import?java.net.Socket;

public?class?SocketService?{

//搭建服務器端

public?static?void?main(String[]?args)?throws?IOException{

SocketService?socketService?=?new?SocketService();

//1、a)創(chuàng)建一個服務器端Socket,即SocketService?

socketService.oneServer();

}

public??void?oneServer(){

try{

ServerSocket?server=null;

try{

server=new?ServerSocket(5209);

//b)指定綁定的端口,并監(jiān)聽此端口。

System.out.println("服務器啟動成功");

//創(chuàng)建一個ServerSocket在端口5209監(jiān)聽客戶請求

}catch(Exception?e)?{

System.out.println("沒有啟動監(jiān)聽:"+e);

//出錯,打印出錯信息

}

Socket?socket=null;

try{

socket=server.accept();

//2、調用accept()方法開始監(jiān)聽,等待客戶端的連接?

//使用accept()阻塞等待客戶請求,有客戶

//請求到來則產生一個Socket對象,并繼續(xù)執(zhí)行

}catch(Exception?e)?{

System.out.println("Error."+e);

//出錯,打印出錯信息

}

//3、獲取輸入流,并讀取客戶端信息?

String?line;

BufferedReader?in=new?BufferedReader(new?InputStreamReader(socket.getInputStream()));

//由Socket對象得到輸入流,并構造相應的BufferedReader對象

PrintWriter?writer=new?PrintWriter(socket.getOutputStream());

//由Socket對象得到輸出流,并構造PrintWriter對象

BufferedReader?br=new?BufferedReader(new?InputStreamReader(System.in));

//由系統(tǒng)標準輸入設備構造BufferedReader對象

System.out.println("Client:"+in.readLine());

//在標準輸出上打印從客戶端讀入的字符串

line=br.readLine();

//從標準輸入讀入一字符串

//4、獲取輸出流,響應客戶端的請求?

while(!line.equals("end")){

//如果該字符串為?"bye",則停止循環(huán)

writer.println(line);

//向客戶端輸出該字符串

writer.flush();

//刷新輸出流,使Client馬上收到該字符串

System.out.println("Server:"+line);

//在系統(tǒng)標準輸出上打印讀入的字符串

System.out.println("Client:"+in.readLine());

//從Client讀入一字符串,并打印到標準輸出上

line=br.readLine();

//從系統(tǒng)標準輸入讀入一字符串

}?//繼續(xù)循環(huán)

//5、關閉資源?

writer.close();?//關閉Socket輸出流

in.close();?//關閉Socket輸入流

socket.close();?//關閉Socket

server.close();?//關閉ServerSocket

}catch(Exception?e)?{//出錯,打印出錯信息

System.out.println("Error."+e);

}

}

}

分享文章:java實現(xiàn)服務端代碼 java服務器代碼
文章起源:http://muchs.cn/article30/doecspo.html

成都網站建設公司_創(chuàng)新互聯(lián),為您提供做網站、軟件開發(fā)域名注冊、微信小程序手機網站建設、全網營銷推廣

廣告

聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

手機網站建設