導航:首頁 > 編程語言 > clientserverjava

clientserverjava

發布時間:2022-08-31 14:59:41

Ⅰ 在java Socket編程中(client給server發送一個字元串,再由server返回一個字元串給client)

SERVER端:
--------------------------------------------------------
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;

public class Server extends Thread {

private Socket clientSocket;

public Server(Socket clientSocket) {
this.clientSocket = clientSocket;
}

public void run() {

DataInputStream dis = null;
DataOutputStream dos = null;

try {

dis = new DataInputStream(clientSocket.getInputStream());
dos = new DataOutputStream(clientSocket.getOutputStream());

while (true) {
String temp = dis.readUTF();
if ("over".equals(temp)) {
break;
}
dos.writeUTF("from server:" + temp);
}

} catch (Exception e) {
//e.printStackTrace();
} finally {
try {
if (dis != null) {
dis.close();
}
if (dis != null) {
dos.close();
}

if (clientSocket != null) {
clientSocket.close();
}
} catch (IOException e) {
e.printStackTrace();
} finally {
System.out.println("Server Thread is shutdown.");
}
}
}

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

ServerSocket ss = new ServerSocket(8008);
while (true) {
Socket clientSocket = ss.accept();
// 針對每個客戶端, 啟一個Server線程專門處理此客戶端的請求。
Server server = new Server(clientSocket);
server.start();
}

}

}

CLIENT端:
----------------------------------------
import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.InputStreamReader;
import java.net.Socket;

public class Client {

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

// 輸入流1, 從鍵盤進入Client。
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);

Socket clientSocket = new Socket("127.0.0.1", 8008);

// 輸入流2, 從伺服器端進入Client的流對象。
DataInputStream dis = new DataInputStream(clientSocket.getInputStream());

// 輸出流, 從Client出去, 到伺服器端。
DataOutputStream dos = new DataOutputStream(clientSocket.getOutputStream());

while (true) {

// 從鍵盤輸入讀取
String msg = br.readLine();

// 將讀取信息發送給伺服器端
dos.writeUTF(msg);

//輸入over退出
if ("over".equals(msg)) {
break;
}

//讀取從伺服器返回的信息
String temp = dis.readUTF();
System.out.println(temp);
}

br.close();
dis.close();
dos.close();
clientSocket.close();

}

}
--------------------------------------------------------

Ⅱ Java中每當server給client發一條消息,client的JTextArea如何同步該消息

因為JTextArea中聲明是這樣的:
JTextArea mytxtarea = new JTextArea();
所以當client收到server端發過來的消息之後,在方法中調用:
mytxtarea.setText(server_message);

這樣信息就會顯示在JTextArea中。

Ⅲ 如何使用java遠程傳輸文件,client只提供ip\文件路徑等參數,server端無需部署服務!

其實有幾種方式的,
1 ftp傳輸應用情況,加入在linux系統端有一些文件需要下載到用戶電腦client端,而linux系統又不是web伺服器,那麼可以通過java程序FTP方式登錄到linux,讀取文件轉換為流輸出到用戶IE端, java訪問Linux伺服器讀取文件 所需jar包:j2ssh-core-0.2.2.jar
2 socket方式,可以應用於比如server-client 聊天窗,傳輸文字;
3 http協議,這種就是最常用的了,比如打開IE下載,上傳東西,java是通過jsp servlet來實現的,然後部署放在tomcat web 伺服器上,在其他區域網環境下的電腦登錄IE即可訪問到。沒有特殊jar,只用java servlet的jar即可。例子如附件,可能上傳不成功哈,網路網路會有很多哈

Ⅳ java開發中svr的client是什麼意思

client是客戶端,在java中c/s結構,c是client客戶端,s是server伺服器端:

  1. C/S又稱Client/Server或客戶/伺服器模式。伺服器通常採用高性能的PC、工作站或小型機,並採用大型資料庫系統,如ORACLE、SYBASE、InfORMix或 SQL Server。客戶端需要安裝專用的客戶端軟體。

  2. 傳統的C/S體系結構雖然採用的是開放模式,但這只是系統開發一級的開放性,在特定的應用中無論是Client端還是Server端都還需要特定的軟體支持。由於沒能提供用戶真正期望的開放環境,C/S結構的軟體需要針對不同的操作系統系統開發不同版本的軟體, 加之產品的更新換代十分快,已經很難適應百台電腦以上區域網用戶同時使用。而且代價高, 效率低。

  3. Client/Server結構是20世紀80年代末提出的。這種結構的系統把較復雜的計算和管理任務交給網路上的高檔機器——伺服器,而把一些頻繁與用戶打交道的任務交給前端較簡單的計算機—客戶機。通過這種方式,將任務合理分配到客戶端和伺服器端,既充分利用了兩端硬體環境的優勢,又實現了網路上信息資源的共享。由於這種結構比較適於區域網運行環境,因此逐漸得到了廣泛的應用。

  4. 在Client/Server結構的系統中,應用程序分為客戶端和伺服器端兩大部分。客戶端部分為每個用戶所專有,而伺服器端部分則由多個用戶共享其信息與功能。客戶端部分通常負責執行前台功能,如管理用戶介面、數據處理和報告請求等;而伺服器端部分執行後台服務,如管理共享外設、控制對共享資料庫的操作等。這種體系結構由多台計算機構成,它們有機地結合在一起,協同完成整個系統的應用,從而達到系統中軟、硬體資源最大限度的利用。

  5. 任何一個應用系統,不管是簡單的單機系統還是復雜的網路系統,都由3個部分組成:顯示邏輯部分(表示層)、事務處理邏輯部分(功能層)和數據處理邏輯部分(數據層)。顯示邏輯部分的功能是與用戶進行交互;事務處理邏輯部分的功能是進行具體的運算和數據的處理;數據處理邏輯部分的功能是對資料庫中的數據進行查詢、修改和更新等。在兩層模式的Client/Server結構中,顯示邏輯部分和事務處理邏輯部分均被放在客戶端,數據處理邏輯部分和資料庫被放在伺服器端。這樣就使得客戶端變得很「胖」,成為胖客戶機,而伺服器端的任務相對較輕,成為瘦伺服器。

  6. 這種傳統的Client/Server結構比較適合於在小規模、用戶數較少(≤100)、單一資料庫且有安全性和快速性保障的區域網環境下運行,所以得到了廣泛的應用。但隨著應用系統的大型化,以及用戶對系統性能要求的不斷提高,兩層模式(2-Tier)的Client/Server結構越來越滿足不了用戶需求。這主要體現在程序開發量大、系統維護困難、客戶機負擔過重、成本增加及系統的安全性難以保障等方面。

Ⅳ 用java編寫Client和Server程序,實現Client和Server的數據通信。

服務端代碼:

importjava.io.IOException;
importjava.io.InputStream;
importjava.net.InetAddress;
importjava.net.ServerSocket;
importjava.net.Socket;
importjava.net.UnknownHostException;

publicclassServer{

publicstaticvoidmain(String[]args)throwsUnknownHostException,IOException{

ServerSocketserver=newServerSocket(2408,5,InetAddress.getByName("localhost"));

while(true){

//等待客戶端的連接
SocketclientSocket=server.accept();

//為每個連接的客戶端分配一個線程,與客戶端通信
newThread(newClientThread(clientSocket)).start();
}
}
}

{

privateSocketclientSocket;

publicClientThread(Socketsocket){
this.clientSocket=socket;
}

@Override
publicvoidrun(){

try{

InputStreaminput=clientSocket.getInputStream();

byte[]buffer=newbyte[1024];

booleanexit=false;

while(!exit){

intlen=input.read(buffer);
Stringmessage=newString(buffer,0,len);

if("bye".equals(message)){
exit=true;
}

System.out.println(clientSocket.getRemoteSocketAddress()+":"+message);
}

clientSocket.close();

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

客戶端代碼:

importjava.io.IOException;
importjava.io.OutputStream;
importjava.net.InetAddress;
importjava.net.Socket;
importjava.net.UnknownHostException;
importjava.util.Scanner;

publicclassClient{

publicstaticvoidmain(String[]args)throwsUnknownHostException,IOException{

Scannerscanner=newScanner(System.in);

Socketsocket=newSocket(InetAddress.getByName("localhost"),2408);

OutputStreamoutput=socket.getOutputStream();

booleanexit=false;

while(!exit){

Stringmessage=scanner.nextLine();

if("bye".equals(message)){
exit=true;
}

byte[]data=message.getBytes();

output.write(data);
output.flush();
}

socket.close();
}
}

Ⅵ 用Java中的Server-Client來相互發送消息,把消息包裝成對象來發送。

importjava.io.InputStream;
importjava.io.ObjectInputStream;
importjava.io.ObjectOutputStream;
importjava.io.OutputStream;
importjava.net.ServerSocket;
importjava.net.Socket;
//服務端
publicclassTCPServerDemo{

publicstaticvoidmain(String[]args)throwsException{
ServerSocketss=newServerSocket(5000);
Sockets=ss.accept();
InputStreamin=s.getInputStream();
OutputStreamout=s.getOutputStream();
ObjectOutputStreamoos=newObjectOutputStream(out);
ObjectInputStreamois=newObjectInputStream(in);
SocketMessagemessage=newSocketMessage();
message.setMessageId(1);
message.setContent("伺服器消息1");
oos.writeObject(message);
oos.flush();
SocketMessagetemp=(SocketMessage)ois.readObject();
System.out.println("收到客戶端消息="+temp);
}

}
importjava.io.InputStream;
importjava.io.ObjectInputStream;
importjava.io.ObjectOutputStream;
importjava.io.OutputStream;
importjava.net.Socket;
//客戶端
publicclassTCPClientDemo{

publicstaticvoidmain(String[]args)throwsException{
Sockets=newSocket("localhost",5000);
InputStreamin=s.getInputStream();
OutputStreamout=s.getOutputStream();
ObjectOutputStreamoos=newObjectOutputStream(out);
ObjectInputStreamois=newObjectInputStream(in);
SocketMessagemessage=newSocketMessage();
message.setMessageId(2);
message.setContent("客戶端消息2");
oos.writeObject(message);
oos.flush();
SocketMessagetemp=(SocketMessage)ois.readObject();
System.out.println("收到服務端消息="+temp);

}

}
importjava.io.Serializable;
//消息對象
{

=1L;

privateStringcontent;
privatelongmessageId;

publicStringgetContent(){
returncontent;
}

publicvoidsetContent(Stringcontent){
this.content=content;
}

publiclonggetMessageId(){
returnmessageId;
}

publicvoidsetMessageId(longmessageId){
this.messageId=messageId;
}


@Override
publicStringtoString(){
returngetClass().getSimpleName()+"[id="+getMessageId()+",content="+getContent()+"]";
}
}

Ⅶ 用java 寫出一個Server 和Client 能實現Client發送的消息顯示在服務端上,Server發送的信息顯示在客戶端上

你好!
我寫的很簡單,你可以在此基礎上完善,好了,廢話不多說,直入正題。
首先,建立一個項目名為TestChat,然後建兩個包,分別為server和client。
server包下建立一個類為Server,一個類為ServerListen。
client包建立一個類Client,一個類為ClentListen。
由於我時間倉促,你自行參考哈。

***********************************************************************

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

/*
* Server.java
*
* Created on 2011-5-8, 16:37:13
*/

package server;

import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
*
* @author Study
*/
public class Server extends javax.swing.JFrame {

/** Creates new form Server */
public Server() {
initComponents();
try {
ss = new ServerSocket(8888);
s = ss.accept();
in = new ObjectInputStream(getS().getInputStream());
out = new ObjectOutputStream(getS().getOutputStream());
this.startListen();
} catch (IOException ex) {
Logger.getLogger(Server.class.getName()).log(Level.SEVERE, null, ex);
}
}

/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {

jScrollPane1 = new javax.swing.JScrollPane();
messageShow = new javax.swing.JTextArea();
messageInput = new javax.swing.JTextField();
sendBtn = new javax.swing.JButton();

setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setTitle("伺服器");

messageShow.setColumns(20);
messageShow.setEditable(false);
messageShow.setRows(5);
jScrollPane1.setViewportView(messageShow);

sendBtn.setText("發送");
sendBtn.addMouseListener(new java.awt.event.MouseAdapter() {
public void mousePressed(java.awt.event.MouseEvent evt) {
sendBtnMousePressed(evt);
}
});

javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 400, Short.MAX_VALUE)
.addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 400, Short.MAX_VALUE)
.addComponent(messageInput, javax.swing.GroupLayout.DEFAULT_SIZE, 400, Short.MAX_VALUE)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addContainerGap(333, Short.MAX_VALUE)
.addComponent(sendBtn)
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 300, Short.MAX_VALUE)
.addGroup(layout.createSequentialGroup()
.addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 201, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addComponent(messageInput, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addComponent(sendBtn)
.addContainerGap(19, Short.MAX_VALUE))
);

pack();
}// </editor-fold>

private void sendBtnMousePressed(java.awt.event.MouseEvent evt) {
this.sendMessage();
this.messageInput.setText("");
}

/**
* @param args the command line arguments
*/
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new Server().setVisible(true);
}
});
}

// Variables declaration - do not modify
protected javax.swing.JScrollPane jScrollPane1;
protected javax.swing.JTextField messageInput;
protected javax.swing.JTextArea messageShow;
protected javax.swing.JButton sendBtn;
// End of variables declaration

private ServerSocket ss;
private Socket s;
private ObjectOutputStream out;
private ObjectInputStream in;

private void startListen() {
ServerListen listen = new ServerListen(this);
Thread t = new Thread(listen);
t.start();
}

/**
* @return the s
*/
public Socket getS() {
return s;
}

/**
* @return the out
*/
public ObjectOutputStream getOut() {
return out;
}

/**
* @return the in
*/
public ObjectInputStream getIn() {
return in;
}

/**
* @return the messageShow
*/
public javax.swing.JTextArea getMessageShow() {
return messageShow;
}

private void sendMessage() {
try {
out.writeObject("伺服器說");
out.flush();
out.writeObject(this.messageInput.getText().trim());
out.flush();
} catch (IOException ex) {
Logger.getLogger(Server.class.getName()).log(Level.SEVERE, null, ex);
}
}

}

Ⅷ 用java socket實現client與server通信,客戶端向服務端發送字元串, 服務端再返回,把返回的變成大寫。

import java.io.*;
import java.util.*;
import java.net.*;
public class Client { //客戶端
public static void main(String args[])throws Exception
{
String clientMessage;//來自用戶輸入的的信息
String serverMessage; //伺服器端的信息
Socket ClientSocket=new Socket("127.0.0.0",5557);//參數是本機地址和埠,客戶端套接字,發起TCP連接
BufferedReader fromUser=new BufferedReader(new InputStreamReader(System.in));//字元讀取流,獲取從鍵盤輸入的字元
BufferedReader fromServer=new BufferedReader(new InputStreamReader(ClientSocket.getInputStream()));//獲取從伺服器端的流,建立套接字輸入流
DataOutputStream toServer=new DataOutputStream(ClientSocket.getOutputStream());//建立套接字輸出流
clientMessage=fromUser.readLine();//讀取從用戶的輸入
toServer.writeBytes(clientMessage);//寫到伺服器端
serverMessage=fromServer.readLine();//從伺服器端讀取
ClientSocket.close();//關閉套接字連接
}

}
import java.io.*;
import java.net.*; //伺服器端
public class Server {
public static void main(String args[])throws Exception
{
String ClientMessage;
String ServerMessage;
ServerSocket serversocket=new ServerSocket(5557);//埠要和客戶端對應
System.out.println("正在監聽5555埠");//
while(true)
{
Socket collection=serversocket.accept();//調用accept()函數,建立TCP連接
DataInputStream fromClient=new DataInputStream(collection.getInputStream());
DataOutputStream toClient=new DataOutputStream(collection.getOutputStream());
ClientMessage=fromClient.readUTF();//接收來自客戶端的信息
ServerMessage=ClientMessage.toUpperCase();//轉換為大寫
toClient.writeBytes(ServerMessage);//寫到伺服器端
System.out.println("成功建立TCP連接");
}
}

}

Ⅸ 那個Java通信能在說的詳細點嗎server是如何和Client_A和B同時通信呢謝謝。

將client_A和B都存在map集合裡面,用名字作為鍵,之後只要在A請求的時候,將要通訊的B的名字傳過去,從集合裡面找B的socket,就對它發送A的發送內容,就可以了,

如果要server同時對A和B通訊,直接遍歷集合就可以了
細節你再去優化

Ⅹ JVM client模式和Server模式的區別

這里向大家描述一下JVMclient模式和Server模式兩者的區別和聯系,JVM如果不顯式指定是-Server模式還是-client模式,JVM能夠根據下列原則進行自動判斷(適用於Java5版本或者Java以上版本)。

JVM client模式和Server模式

JVM Server模式與client模式啟動,最主要的差別在於:-Server模式啟動時,速度較慢,但是一旦運行起來後,性能將會有很大的提升。JVM如果不顯式指定是-Server模式還是-client模式,JVM能夠根據下列原則進行自動判斷(適用於Java5版本或者Java以上版本)。

前段時間有個同事給我發了個java跟c++性能比較的文章,其中有個對比圖引起了我的興趣,意外的是,我感興趣的不是java和c++的對比,而是java -Server模式和java -client模式的對比。從來沒想到兩者間的性能有如此巨大的差別。而在後來自己的親身測試中發現確實如此。

下面是我看到的那個對比圖:

JVM工作在Server模式可以大大提高性能,但應用的啟動會比client模式慢大概10%。當該參數不指定時,虛擬機啟動檢測主機是否為伺服器,如果是,則以Server模式啟動,否則以client模式啟動,J2SE5.0檢測的根據是至少2個CPU和最低2GB內存。

當JVM用於啟動GUI界面的交互應用時適合於使用client模式,當JVM用於運行伺服器後台程序時建議用Server模式。
JVM在client模式默認-Xms是1M,-Xmx是64M;JVM在Server模式默認-Xms是128M,-Xmx是1024M。我們可以通過運行:java -version來查看jvm默認工作在什麼模式。

閱讀全文

與clientserverjava相關的資料

熱點內容
愛的共享韓 瀏覽:179
中文字幕推薦排行榜 瀏覽:589
李采鐔所有電影 瀏覽:348
前度2未刪減 瀏覽:866
日本一部關於平行時空的電影 瀏覽:346
傷寒論原文pdf 瀏覽:29
劇情肉的電影 瀏覽:803
下行 電影在線觀看 瀏覽:786
歐美大尺度男同電影 瀏覽:985
張學友最後大佬電影 瀏覽:777
心理罪中廖亞凡懷了孩子 瀏覽:844
伺服器如何開許可權設置密碼 瀏覽:271
申請資料填寫小程序源碼 瀏覽:177
伺服器怎麼私信別人 瀏覽:994
phpxdebug關閉 瀏覽:690
能看的網址大家都懂的 瀏覽:287
安卓程序員開發經驗 瀏覽:660
伺服器返回超時是怎麼回事 瀏覽:653
網關後dns伺服器有什麼用 瀏覽:607
line連接不上伺服器怎麼辦 瀏覽:862