以太坊的java客戶端使用
① 用java代碼實現客戶端與服務端建立連接
套接字 Socket
import java.net.*;
Server:
ServerSocket server=new ServerSocket(port);//port是埠
Socket socket=server.accept();
//等待客戶機的連接請求,若連接,則創建一套接字,並將返回。
Client:
Socket socket=new Socket("host",port);//host主機名(本機:127.0.0.1)
② 編寫java程序實現客戶端和服務端的通信
伺服器端:
public class Server{
public static void main(String[] args){
ServerSocket ss = new ServerSocket(埠號);
Socket s = ss.accept();
BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream()));
String str = br.readLine();
System.out.println(str);
br.close();
s.close();
ss.close();
}
}
客戶端:
public class Client{
public static void main(String[] args){
Socket s = new Socket(ip,埠)
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
bw.write("hello");
bw.flush();
bw.close();
s.close();
}
}
先啟動伺服器端在啟動客戶端,兩個埠要一致,如果是同一台電腦的ip可寫為"127.0.0.1"
③ 用Java 的socket實現客戶端的功能
//服務端程序:
importjava.io.*;
importjava.net.*;
publicclassTCPServer{
publicstaticvoidmain(String[]args)throwsIOException{
newTCPServer().init();
}
@SuppressWarnings("static-access")
privatevoidinit()throwsIOException{
@SuppressWarnings("resource")
ServerSocketserver=newServerSocket(1000);
Socketclient=null;
while(true){
try{
client=server.accept();
BufferedInputStreambis=newBufferedInputStream(client.getInputStream());
byte[]b=newbyte[1024];
intlen=0;
Stringmessage="";
while((len=bis.read(b))!=-1){
message=newString(b,0,len);
System.out.print("客戶端:"+client.getInetAddress().getLocalHost().getHostAddress()+"發來消息:"+message);
if("byte".equals(message.trim()))
client.close();
PrintWriterpw=newPrintWriter(client.getOutputStream(),true);
pw.println(message);
}
}catch(Exceptione){
System.err.println("客戶端:"+client.getInetAddress().getLocalHost().getHostAddress()+"已斷開連接!");
}
}
}
}
//客戶端程序:
importjava.io.*;
importjava.net.Socket;
{
publicstaticvoidmain(String[]args)throwsIOException{
newTCPClient().init();
}
privatevoidinit()throwsIOException{
@SuppressWarnings("resource")
finalSocketclient=newSocket("127.0.0.1",1000);
BufferedReaderin=newBufferedReader(newInputStreamReader(System.in));
Stringsend="";
while(true){
send=in.readLine();
PrintWriterout=newPrintWriter(client.getOutputStream(),true);
if(!"byte".equals(send.trim()))
out.println(send);
else{
out.println(send);
System.exit(0);
}
newThread(newTCPClient(){
@SuppressWarnings("static-access")
publicvoidrun(){
try{
BufferedInputStreambis=newBufferedInputStream(client.getInputStream());
byte[]b=newbyte[1024];
intlen=0;
while((len=bis.read(b))!=-1){
System.out.println("伺服器:"+client.getInetAddress().getLocalHost().getHostAddress()+"發來消息:"+newString(b,0,len).trim());
}
}catch(IOExceptione){
System.err.println("連接伺服器失敗!");
}
}
}).start();
}
}
publicvoidrun(){}
}
//伺服器測試結果:
客戶端:192.168.0.200發來消息:001 byte
客戶端:192.168.0.200發來消息:byte
客戶端:192.168.0.200 已斷開連接!
客戶端:192.168.0.200發來消息:adasd
客戶端:192.168.0.200 已斷開連接!
//客戶端測試結果:
---001號客戶端--
001byte
伺服器:192.168.0.200發來消息:001byte
byte //001禮貌說跟伺服器說byte
---002號客戶端--
adasd //002客戶端直接關閉程序
伺服器:192.168.0.200發來消息:adasd
④ 我用Java代碼編寫的一個客戶端界面Client.java,我在編寫個登錄界面Login.java後,
mport java.awt.HeadlessException;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.ImageIcon;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JOptionPane;import javax.swing.JPanel;import javax.swing.JPasswordField;import javax.swing.JTextField;@SuppressWarnings("serial")public class MainFrame extends JFrame {JLabel lbl1 = new JLabel("用戶名:");JLabel lbl2 = new JLabel("密 碼:");JTextField txt = new JTextField("admin",20);JPasswordField pwd = new JPasswordField(20);JButton btn = new JButton("登錄");JPanel pnl = new JPanel();private int error = 0;public MainFrame(String title) throws HeadlessException {super(title);init();}private void init() {this.setResizable(false);pwd.setEchoChar('*');pnl.add(lbl1);pnl.add(txt);pnl.add(lbl2);pnl.add(pwd);pnl.add(btn);this.getContentPane().add(pnl);btn.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {if ("admin".equals(new String(pwd.getPassword()))){pnl.removeAll();JLabel lbl3 = new JLabel();ImageIcon icon = new ImageIcon(this.getClass().getResource("pic.jpg"));lbl3.setIcon(icon);pnl.add(lbl3);}else{if(error < 3){JOptionPane.showMessageDialog(null,"密碼輸入錯誤,請再試一次");error++;}else{JOptionPane.showMessageDialog(null,"對不起,您不是合法用戶");txt.setEnabled(false);pwd.setEnabled(false);btn.setEnabled(false);}}}});}public static void main(String[] args) {MainFrame frm = new MainFrame("測試");frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frm.setBounds(100, 100, 300, 120);frm.setVisible(true);}}
⑤ 編寫代碼,使用Java Socket創建客戶端Socket的過程。
如果你要實現伺服器和客戶端都可以向對方發送消息,而不等待對方應答,只需要把InputStream和OutputStream分別放在兩個不同線程里就行了,即是說把接收流與發送流分別用一個線程監聽處理。如果要實現不分客戶端伺服器的話,用UDP通信即可 補充回答:如果不涉及到MIME,只是收發簡單文本郵件。就會比較簡單。因為就像你說的,smtp和pop3協議就是文本格式的。你用Socket建立連接後,就像讀文件一樣,一行一行的讀數據,然後按照協議分析數據格式。例如如果開始時USER那麼後面可能跟的就是用戶等。 就是一個字元串解析和匹配的過程。網上好像有這類代碼,自己找一個學習一下。我以前用C在68k上作過,不是很難。不過代碼已經沒有了。
⑥ 怎麼用java編寫簡單客戶端程序
我這里有一個例子希望能夠幫助你
public class Client{
private Socket socket;
try{
Socket socket=new Socket ("localhoast',8088);
ip=InetAddress.getLocalHost();
String localip=ip.getHostAddress();
System.out.println(localip);
String name=ip.getHostName();
System.out.println(name);
}
catch(Exception e){
}
public void start(){
try{
Run r2=new Run();
Thread t1=new Thread(r2);
t1.setDaemon(true);
t1.start();
Scanner sc=new Scanner(System.in);
OutputStream os=socket.getOutputStream();
OutputStreamWriter osw=new OutputStreamWriter(os);
PrintWriter writer=new PrintWriter(osw,true);
while(true){
writer.println(sc.nextLine());
}
}catch(Exception e){
}
}
public static void main(String args[]){
Client client=new Client();
client.start();
}
class Run implements Runnable{
public void run() {
while(true){
try {
InputStream is=socket.getInputStream();
InputStreamReader isr=new InputStreamReader(is);
BufferedReader br=new BufferedReader(isr);
while(true){
String str=br.readLine();
System.out.println("伺服器說:"+str);
if("bye".equals(str)){
System.out.println("再見客戶端");
System.out.println("聊天結束");
}
}
} catch (IOException e) {
e.printStackTrace();
} finally{
try {
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
}
⑦ 使用java編寫客戶端用什麼好
用QT做界面開發,不過我還是不建議用Java寫客戶端,實在是太坑了。
⑧ Java用來編寫客戶端還是伺服器端
兩者都可以...不過java的垃圾回收機制因為是自動的所以執行客戶端程序的時候效率特別慢...一般用於伺服器端或WEB開發...學java的重點就是以j2ee技術為核心的。想寫客戶端之類的用C語言是最佳的..不過內存處理機制全部自己編寫..難度不是一般的高。
⑨ java 網路編程: 如何實現客戶端與客戶端之間的之間通信
(1)伺服器首先啟動監聽程序,對指定的埠進行監聽,等待接收客戶端的連接請求。
(2)客戶端程序啟動,請求連接伺服器的指定埠。
(3)伺服器收到客戶端的連接請求後與客戶端建立套接字連接。
(4)連接成功後,客戶端與伺服器分別打開兩個流,其中客戶端的輸入流連接到伺服器的輸出流,伺服器的輸入流
連接到客戶端的輸出流,兩邊的流建立連接後就可以雙向的通信了。
(5)當通信完畢後客戶端與伺服器端兩邊各自斷開連接。