java的聊天代码大全 java的聊天代码大全

大家有没有基于一对一聊天的最简单的java聊天代码

先运行服务端 再运行客户端   就能对话了

让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:域名注册雅安服务器托管、营销软件、网站建设、秭归网站维护、网站推广。

服务端

package Liaotian;

import java.awt.*;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStreamReader;

import java.io.PrintWriter;

import java.net.ServerSocket;

import java.net.Socket;

import java.text.SimpleDateFormat;

import java.util.Date;

import javax.swing.JPanel;

import javax.swing.JScrollPane;

import javax.swing.JTextArea;

public class fwjiemian extends Frame implements ActionListener{

JTextArea lt;

TextField sr;

Button fs;

Panel xia;

ServerSocket ss;

Socket s;

BufferedReader br;

PrintWriter pw;

BufferedReader in;

public fwjiemian(){

lt=new JTextArea();

lt.setLineWrap(true);

sr=new TextField();

fs=new Button("发送");

xia=new Panel(new GridLayout(1,2)); 

xia.add(sr);

xia.add(fs);

this.add(lt);

this.add(xia,BorderLayout.SOUTH);

this.setResizable(false);

this.setSize(400, 500);

this.setLocation(350, 100);

this.setTitle("服务器");

this.setVisible(true);

fs.addActionListener(this);

//创建客户端+接受消息

try {

lt.setFont(new   java.awt.Font("宋体",0,15));   

ss=new ServerSocket(8888);

lt.append("服务器已启动,等待客户端接入..."+"\n"+"\n");

s=ss.accept();

lt.append("客户端已接入..."+"\n"+"\n");

while(true){

//获取时间

SimpleDateFormat sm=new SimpleDateFormat("HH:mm:ss");

System.out.println(sm.format(new Date()));

//接受消息

br=new BufferedReader(new InputStreamReader(s.getInputStream()));

String info=br.readLine();

lt.append("☆ 客户端:"+info+"    "+sm.format(new Date())+"\n"+"\n");

}

} catch (Exception e) {

e.printStackTrace();

}

}

public static void main(String[] args) {

new fwjiemian();

}

@Override

public void actionPerformed(ActionEvent e) {

if(e.getSource()==fs){

try {

//获取时间

SimpleDateFormat sm=new SimpleDateFormat("HH:mm:ss");

System.out.println(sm.format(new Date()));

//发送消息

String infotokehu=sr.getText();

pw=new PrintWriter(s.getOutputStream(),true);

pw.println(infotokehu);

lt.setFont(new   java.awt.Font("宋体",0,15));   

lt.append("★ 服务器:"+infotokehu+"    "+sm.format(new Date())+"\n"+"\n");

sr.setText("");

} catch (IOException e1) {

e1.printStackTrace();

}

}

}

}

客户端

package Liaotian;

import java.awt.*;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStreamReader;

import java.io.PrintWriter;

import java.net.ServerSocket;

import java.net.Socket;

import java.text.SimpleDateFormat;

import java.util.Date;

import javax.swing.JScrollPane;

import javax.swing.JTextArea;

public class khjiemian extends Frame implements ActionListener{

JTextArea lt;

TextField sr;

Button fs;

Panel xia;

Socket s;

PrintWriter pw;

BufferedReader br;

BufferedReader in;

public khjiemian(){

lt=new JTextArea();

lt.setLineWrap(true); 

sr=new TextField();

fs=new Button("发送");

xia=new Panel(new GridLayout(1,2)); 

xia.add(sr);

xia.add(fs);

this.add(lt);

this.add(xia,BorderLayout.SOUTH);

this.setResizable(false);

this.setSize(400, 500);

this.setLocation(800, 100);

this.setTitle("服务器");

this.setVisible(true);

fs.addActionListener(this);

//创建客户端+接受消息

try {

lt.setFont(new   java.awt.Font("宋体",0,15));   

s=new Socket("127.0.0.1",8888);

lt.append("客户端已启动,等待接入服务器..."+"\n"+"\n");

lt.append("已接入服务器..."+"\n"+"\n");

while(true){

//获取时间

SimpleDateFormat sm=new SimpleDateFormat("HH:mm:ss");

System.out.println(sm.format(new Date()));

//接受消息

br=new BufferedReader(new InputStreamReader(s.getInputStream()));

String info=br.readLine();

lt.append("★ 服务器:"+info+"    "+sm.format(new Date())+"\n"+"\n");

}

} catch (Exception e) {

e.printStackTrace();

}

public static void main(String[] args) {

new khjiemian();

}

public void actionPerformed(ActionEvent w) {

if(w.getSource()==fs){

try {

//获取时间

SimpleDateFormat sm=new SimpleDateFormat("HH:mm:ss");

System.out.println(sm.format(new Date()));

//发消息

String infotofuwu=sr.getText();

pw=new PrintWriter(s.getOutputStream(),true);

pw.println(infotofuwu);

lt.setFont(new   java.awt.Font("宋体",0,15));   

lt.append("☆ 客户端:"+infotofuwu+"    "+sm.format(new Date())+"\n"+"\n");

sr.setText("");

}

 catch (Exception e) {

e.printStackTrace();

}

}

}

急求一个JAVA编写的局域网聊天代码?不要求很复杂。只要可以在两台机子上简单的对话就可以。

//以下引入包

import javax.swing.*;

import java.awt.*;

import java.awt.event.*;

import java.io.*;

import java.net.*;

import java.applet.*;

public class regit extends JApplet implements ActionListener,ItemListener//接口

{

String s=null;

//对象的声明

JLabel labelname,labelpass,labelsxe,labeladdress,labelmail,labelphone;//标签

JTextField textname,textaddress,textmail,textphone;//文本框

JRadioButton r1,r2;//单选按纽

ButtonGroup bg;//组

JPasswordField textpass;//密码域

JButton buttonregit,buttonreset;//注册按纽 重写按纽

JPanel p;//面板

String sex;//定义性别字符串

URL url;//统一资源定位

BufferedWriter out1,out2;//流

BufferedReader in;

//布局方式

GridBagLayout gbl;

GridBagConstraints gc;

AppletContext co;//接口

//初始化

public void init()

{

//new 对象

labelname=new JLabel("用 户 名:");

labelpass=new JLabel("用户密码:");

labelsxe=new JLabel("性别:");

labeladdress=new JLabel("地址:");

labelmail=new JLabel("电子邮件:");

labelphone=new JLabel("联系电话:");

textname=new JTextField(15); textname.setForeground(Color.red);

textname.setToolTipText("请在这输入你的用户名");

textaddress=new JTextField(15);textaddress.setForeground(Color.red);

textaddress.setToolTipText("请在这输入你的地址");

textmail=new JTextField(15); textmail.setForeground(Color.red);

textmail.setToolTipText("请在这里输入你的E-mail地址");

textphone=new JTextField(15); textphone.setForeground(Color.red);

textphone.setToolTipText("请在这输入你的电话号码");

r1=new JRadioButton("男"); r1.setBackground(new Color(47,177,210));//设置颜色

r2=new JRadioButton("女"); r2.setBackground(new Color(47,177,210));//设置颜色

bg=new ButtonGroup();

bg.add(r1);bg.add(r2);//加入组,实现单选

textpass=new JPasswordField(15);

textpass.setToolTipText("在这里输入密码");

textpass.setForeground(Color.red);

buttonregit=new JButton("注册"); buttonregit.setBackground(new Color(47,177,210));//设置颜色

buttonregit.setToolTipText("点击按纽完成注册");

buttonreset=new JButton("填写"); buttonreset.setBackground(new Color(47,177,210));//设置颜色

buttonreset.setToolTipText("点击按纽刷新重写");

gbl=new GridBagLayout(); ///////////////////////////////////////

gc=new GridBagConstraints(); //////采用GridBagLayout布局方式////////

p=new JPanel();

p.setLayout(gbl);

p.setBackground(new Color(47,177,210));

this.getContentPane().add(p);//加入面板

gc.anchor=GridBagConstraints.NORTHWEST;

gc.gridx=2;

gc.gridy=2;

gbl.setConstraints(labelname,gc);

p.add(labelname);

gc.anchor=GridBagConstraints.NORTHWEST;

gc.gridx=4;

gc.gridy=2;

gbl.setConstraints(textname,gc);

p.add(textname);

gc.anchor=GridBagConstraints.NORTHWEST;

gc.gridx=2;

gc.gridy=4;

gbl.setConstraints(labelpass,gc);

p.add(labelpass);

gc.anchor=GridBagConstraints.NORTHWEST;

gc.gridx=4;

gc.gridy=4;

gbl.setConstraints(textpass,gc);

p.add(textpass);

gc.anchor=GridBagConstraints.NORTHWEST;

gc.gridx=2;

gc.gridy=6;

gbl.setConstraints(labelsxe,gc);

p.add(labelsxe);

gc.anchor=GridBagConstraints.NORTHWEST;

gc.gridx=4;

gc.gridy=6;

gbl.setConstraints(r1,gc);

p.add(r1);

gc.anchor=GridBagConstraints.NORTHWEST;

gc.gridx=5;

gc.gridy=6;

gbl.setConstraints(r2,gc);

p.add(r2);

gc.anchor=GridBagConstraints.NORTHWEST;

gc.gridx=2;

gc.gridy=8;

gbl.setConstraints(labeladdress,gc);

p.add(labeladdress);

gc.anchor=GridBagConstraints.NORTHWEST;

gc.gridx=4;

gc.gridy=8;

gbl.setConstraints(textaddress,gc);

p.add(textaddress);

gc.anchor=GridBagConstraints.NORTHWEST;

gc.gridx=2;

gc.gridy=10;

gbl.setConstraints(labelmail,gc);

p.add(labelmail);

gc.anchor=GridBagConstraints.NORTHWEST;

gc.gridx=4;

gc.gridy=10;

gbl.setConstraints(textmail,gc);

p.add(textmail);

gc.anchor=GridBagConstraints.NORTHWEST;

gc.gridx=2;

gc.gridy=12;

gbl.setConstraints(labelphone,gc);

p.add(labelphone);

gc.anchor=GridBagConstraints.NORTHWEST;

gc.gridx=4;

gc.gridy=12;

gbl.setConstraints(textphone,gc);

p.add(textphone);

gc.anchor=GridBagConstraints.NORTHWEST;

gc.gridx=2;

gc.gridy=16;

gbl.setConstraints(buttonregit,gc);

p.add(buttonregit);

gc.anchor=GridBagConstraints.NORTHWEST;

gc.gridx=4;

gc.gridy=16;

gbl.setConstraints(buttonreset,gc);

p.add(buttonreset);

/////////////////////////////////////////////

co=this.getAppletContext();

/////////////////////////////////////////////

buttonregit.addActionListener(this);//按纽事件的监听

buttonreset.addActionListener(this);//按纽事件的监听

r1.addItemListener(this);//选择事件的监听

r2.addItemListener(this);//选择事件的监听

textphone.addActionListener(this);

}

public void actionPerformed(ActionEvent e)

{

//注册按纽事件

if(e.getSource()==buttonregit)

{

String s1=textname.getText(); ////////////////////

String s2=new String(textpass.getPassword());////////////////////

String s3=textaddress.getText(); // 定义字符串 //

String s4=textmail.getText(); ////////////////////

String s5=textphone.getText(); ////////////////////

//判断注册资料 信息 是否为空

if(s1.length()==0 || s2.length()==0 ||s3.length()==0 ||s4.length()==0 ||s5.length()==0)

{

int error=JOptionPane.INFORMATION_MESSAGE;

JOptionPane.showMessageDialog(null,"资料不能为空,请重新注册!","【温馨提示】",error);

return;//弹出对话框并返回

}

try//写入到txt文件

{

in=new BufferedReader(new FileReader("d:\\迷离视线聊天室\\password.txt"));

}

catch(Exception ee){}

String ss=s1;

try

{

while((s=in.readLine())!=null)

{

if(s.startsWith(ss))

{

JOptionPane.showMessageDialog(null,"用户名已经存在,请更换名字!");

textname.setText("");//设置为空,重新输入

textpass.setText("");

textaddress.setText("");

textmail.setText("");

textphone.setText("");

return;

}

}

}

catch(Exception ee){}

///////////////////////////以上代码判断是否有同名

{

try

{

out1=new BufferedWriter(new FileWriter("d:\\迷离视线聊天室\\password.txt",true));

out2=new BufferedWriter(new FileWriter("d:\\迷离视线聊天室\\message.txt",true));

}//创建文件

catch(Exception ee)

{}

try

{

out1.write(s1+"#"+s2);//写

out1.newLine();

out2.write("用户名:"+s1);

out2.newLine();

out2.write("密码:"+s2);

out2.newLine();

out2.write("性别:"+sex);

out2.newLine();

out2.write("地址:"+s3);

out2.newLine();

out2.write("电子邮件:"+s4);

out2.newLine();

out2.write("电话:"+s5);

out2.newLine();

out1.flush();

out2.flush();//清理缓冲

out1.close();

out2.close();

}

catch(Exception ee)

{}

JOptionPane.showMessageDialog(null,"注册成功!");

try

{

String qss="";

url=new url(/qss);//连接上网址

co.showDocument(url);

}

catch(Exception exx)

{}

}

}

//////////////////////以下为回车事件

if(e.getSource()==textphone)

{

String s1=textname.getText(); ////////////////////

String s2=new String(textpass.getPassword());////////////////////

String s3=textaddress.getText(); // 定义字符串 //

String s4=textmail.getText(); ////////////////////

String s5=textphone.getText(); ////////////////////

//判断注册资料 信息 是否为空

if(s1.length()==0 || s2.length()==0 ||s3.length()==0 ||s4.length()==0 ||s5.length()==0)

{

int error=JOptionPane.INFORMATION_MESSAGE;

JOptionPane.showMessageDialog(null,"资料不能为空,请重新注册!","【温馨提示】",error);

return;//弹出对话框并返回

}

try//写入到txt文件

{

in=new BufferedReader(new FileReader("d:\\迷离视线聊天室\\password.txt"));

}

catch(Exception ee){}

String ss=s1;

try

{

while((s=in.readLine())!=null)

{

if(s.startsWith(ss))

{

JOptionPane.showMessageDialog(null,"用户名已经存在,请更换名字!");

textname.setText("");//设置为空,重新输入

textpass.setText("");

textaddress.setText("");

textmail.setText("");

textphone.setText("");

return;

}

}

}

catch(Exception ee){}

///////////////////////////以上代码判断是否有同名

{

try

{

out1=new BufferedWriter(new FileWriter("d:\\迷离视线聊天室\\password.txt",true));

out2=new BufferedWriter(new FileWriter("d:\\迷离视线聊天室\\message.txt",true));

}//创建文件

catch(Exception ee)

{}

try

{

out1.write(s1+"#"+s2);//写

out1.newLine();

out2.write("用户名:"+s1+"密码:"+s2+"性别:"+sex+"地址:"+s3+"电子邮件:"+s4+"电话:"+s5);//写

out2.newLine();

out1.flush();

out2.flush();//清理缓冲

out1.close();

out2.close();

}

catch(Exception ee)

{}

JOptionPane.showMessageDialog(null,"注册成功!");

try

{

String qss="";

url=new url(/qss);//连接上网址

co.showDocument(url);

}

catch(Exception exx)

{}

}

}

if(e.getSource()==buttonreset)//刷新重写事件

{

textname.setText("");

textpass.setText("");

textaddress.setText("");

textmail.setText("");

textphone.setText("");

}

}

//////////////////////////////////////////

//

public void itemStateChanged(ItemEvent ex)

{

if(ex.getSource()==r1)

{

sex=new String("男");

}

else if(ex.getSource()==r2)

{

sex=new String("女");

}

}

}

参考资料:试试看,刚在网上找的

求Java Socket 聊天室代码

两个类,实现交互

import java.io.BufferedReader;

import java.io.BufferedWriter;

import java.io.InputStreamReader;

import java.io.OutputStreamWriter;

import java.io.PrintWriter;

import java.net.ServerSocket;

import java.net.Socket;

public class MutiChat

{

public static void main(String[] args)

{

MutiChat mc = new MutiChat();

mc.receive().start();

mc.send().start();

}

/**

* 接收信息

*

* @return

*/

private Thread receive()

{

return new Thread()

{

public void run()

{

ServerSocket server_socket = null;

Socket sk = null;

BufferedReader in = null;

try

{

server_socket = new ServerSocket(7777);

sk = server_socket.accept();

in = new BufferedReader(new InputStreamReader(sk

.getInputStream()));

while (true)

{

String str = in.readLine();

System.out.println(str);

}

} catch (Exception e)

{

e.printStackTrace();

}

}

};

}

private Thread send()

{

return new Thread()

{

public void run()

{

Socket client_socket = null;

BufferedReader in = null;

PrintWriter out = null;

while (true)

{

try

{

client_socket = new Socket("127.0.0.1", 8888);

in = new BufferedReader(

new InputStreamReader(System.in));

out = new PrintWriter(new BufferedWriter(

new OutputStreamWriter(client_socket

.getOutputStream())), true);

while (true)

{

String str = in.readLine();

out.println(str);

}

} catch (Exception e)

{

try

{

Thread.sleep(1000);

} catch (Exception ex)

{

ex.printStackTrace();

}

}

}

}

};

}

}

import java.io.BufferedReader;

import java.io.BufferedWriter;

import java.io.InputStreamReader;

import java.io.OutputStreamWriter;

import java.io.PrintWriter;

import java.net.ServerSocket;

import java.net.Socket;

public class MutiChat2

{

public static void main(String[] args)

{

MutiChat2 mc = new MutiChat2();

mc.receive().start();

mc.send().start();

}

/**

* 接收信息

*

* @return

*/

private Thread receive()

{

return new Thread()

{

public void run()

{

ServerSocket server_socket = null;

Socket sk = null;

BufferedReader in = null;

try

{

server_socket = new ServerSocket(8888);

sk = server_socket.accept();

in = new BufferedReader(new InputStreamReader(sk

.getInputStream()));

while (true)

{

String str = in.readLine();

System.out.println(str);

}

} catch (Exception e)

{

e.printStackTrace();

}

}

};

}

private Thread send()

{

return new Thread()

{

public void run()

{

Socket client_socket = null;

BufferedReader in = null;

PrintWriter out = null;

while (true)

{

try

{

client_socket = new Socket("127.0.0.1", 7777);

in = new BufferedReader(

new InputStreamReader(System.in));

out = new PrintWriter(new BufferedWriter(

new OutputStreamWriter(client_socket

.getOutputStream())), true);

while (true)

{

String str = in.readLine();

out.println(str);

}

} catch (Exception e)

{

try

{

Thread.sleep(1000);

} catch (Exception ex)

{

ex.printStackTrace();

}

}

}

}

};

}

}

要JAVA聊天程序代码,急用

import java.io.InputStream;

import java.io.DataInputStream;

import java.io.InputStreamReader;

import java.io.OutputStream;

import java.io.DataOutputStream;

import java.io.BufferedReader;

import java.net.ServerSocket;

import java.net.Socket;

import java.io.IOException;

import java.util.Date;

class Server

{

public Server()

{

try

{

ServerSocket s=new ServerSocket(8888);

Socket ss=s.accept();

OutputStream out=ss.getOutputStream();

DataOutputStream dout=new DataOutputStream(out);

InputStream in=ss.getInputStream();

DataInputStream din=new DataInputStream(in);

System.out.print(din.readUTF()+"!");

dout.writeUTF("你已经连接到服务器"+"\t"+"你的地址:"+ss.getInetAddress()+"\t"

+"你的链接端口:"+ss.getLocalPort()+"\n");

new ReadMessage(din).start();

new SendMessage(dout).start();

}

catch (IOException e)

{

e.printStackTrace();

}

}

public static void main(String[] args)

{

new Server();

}

}

//接受客户端信息

class ReadMessage extends Thread

{

private DataInputStream din;

public ReadMessage(DataInputStream din)

{

this.din=din;

}

public void run()

{

String str;

try

{

while (true)

{

str=din.readUTF();

System.out.println(new Date().toLocaleString()+"客户端说:"+str);

if (str.equals("bye"))

{

System.out.println("客户端下线!");

break;

}

}

}

catch (IOException e)

{

e.printStackTrace();

}

}

}

// 发出服务器信息

class SendMessage extends Thread

{

private DataOutputStream dout;

public SendMessage(DataOutputStream dout)

{

this.dout=dout;

}

public void run()

{

InputStreamReader inr=new InputStreamReader(System.in);

BufferedReader buf=new BufferedReader(inr);

String str;

try

{

while(true)

{

str=buf.readLine();

dout.writeUTF(str);

if (str.equals("bye"))

{

System.out.println("服务器退出!");

System.exit(1);

}

}

}

catch (IOException e)

{

e.printStackTrace();

}

}

}

import java.io.InputStream;

import java.io.DataInputStream;

import java.io.InputStreamReader;

import java.io.OutputStream;

import java.io.DataOutputStream;

import java.io.BufferedReader;

import java.net.Socket;

import java.io.IOException;

import java.util.Date;

class Client

{

public Client()

{

try

{

Socket s=new Socket("192.168.1.2",8888);

InputStream in=s.getInputStream();

DataInputStream din=new DataInputStream(in);

OutputStream out=s.getOutputStream();

DataOutputStream dout=new DataOutputStream(out);

dout.writeUTF("服务器你好!我是客户端");

System.out.println(din.readUTF());

new Thread(new SenderMessage(dout)).start();

new Thread(new ReaderMessage(din)).start();

}

catch (IOException e)

{

e.printStackTrace();

}

}

public static void main(String[] args)

{

new Client();

}

}

class ReaderMessage implements Runnable

{

private DataInputStream din;

public ReaderMessage(DataInputStream din)

{

this.din=din;

}

public void run()

{

String str;

try

{

while(true)

{

str=din.readUTF();

System.out.println(new Date().toLocaleString()+"服务器说:"+str);

if (str.equals("bye"))

{

System.out.println("服务器已经关闭,此程序自动退出!");

break;

}

}

}

catch (IOException e)

{

e.printStackTrace();

}

}

}

class SenderMessage implements Runnable

{

private DataOutputStream dout;

public SenderMessage(DataOutputStream dout)

{

this.dout=dout;

}

public void run()

{

String str;

InputStreamReader inf=new InputStreamReader(System.in);

BufferedReader buf=new BufferedReader(inf);

try

{

while (true)

{

str=buf.readLine();

dout.writeUTF(str);

if (str.equals("bye"))

{

System.out.println("客户端自己退出!");

System.exit(1);

}

}

}

catch (IOException e)

{

e.printStackTrace();

}

}

}

java 聊天室 源代码

【ClientSocketDemo.java 客户端Java源代码】

import java.net.*;

import java.io.*;

public class ClientSocketDemo

{

//声明客户端Socket对象socket

Socket socket = null;

//声明客户器端数据输入输出流

DataInputStream in;

DataOutputStream out;

//声明字符串数组对象response,用于存储从服务器接收到的信息

String response[];

//执行过程中,没有参数时的构造方法,本地服务器在本地,取默认端口10745

public ClientSocketDemo()

{

try

{

//创建客户端socket,服务器地址取本地,端口号为10745

socket = new Socket("localhost",10745);

//创建客户端数据输入输出流,用于对服务器端发送或接收数据

in = new DataInputStream(socket.getInputStream());

out = new DataOutputStream(socket.getOutputStream());

//获取客户端地址及端口号

String ip = String.valueOf(socket.getLocalAddress());

String port = String.valueOf(socket.getLocalPort());

//向服务器发送数据

out.writeUTF("Hello Server.This connection is from client.");

out.writeUTF(ip);

out.writeUTF(port);

//从服务器接收数据

response = new String[3];

for (int i = 0; i response.length; i++)

{

response[i] = in.readUTF();

System.out.println(response[i]);

}

}

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

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

}

//执行过程中,有一个参数时的构造方法,参数指定服务器地址,取默认端口10745

public ClientSocketDemo(String hostname)

{

try

{

//创建客户端socket,hostname参数指定服务器地址,端口号为10745

socket = new Socket(hostname,10745);

in = new DataInputStream(socket.getInputStream());

out = new DataOutputStream(socket.getOutputStream());

String ip = String.valueOf(socket.getLocalAddress());

String port = String.valueOf(socket.getLocalPort());

out.writeUTF("Hello Server.This connection is from client.");

out.writeUTF(ip);

out.writeUTF(port);

response = new String[3];

for (int i = 0; i response.length; i++)

{

response[i] = in.readUTF();

System.out.println(response[i]);

}

}

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

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

}

//执行过程中,有两个个参数时的构造方法,第一个参数hostname指定服务器地址

//第一个参数serverPort指定服务器端口号

public ClientSocketDemo(String hostname,String serverPort)

{

try

{

socket = new Socket(hostname,Integer.parseInt(serverPort));

in = new DataInputStream(socket.getInputStream());

out = new DataOutputStream(socket.getOutputStream());

String ip = String.valueOf(socket.getLocalAddress());

String port = String.valueOf(socket.getLocalPort());

out.writeUTF("Hello Server.This connection is from client.");

out.writeUTF(ip);

out.writeUTF(port);

response = new String[3];

for (int i = 0; i response.length; i++)

{

response[i] = in.readUTF();

System.out.println(response[i]);

}

}

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

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

}

public static void main(String[] args)

{

String comd[] = args;

if(comd.length == 0)

{

System.out.println("Use localhost(127.0.0.1) and default port");

ClientSocketDemo demo = new ClientSocketDemo();

}

else if(comd.length == 1)

{

System.out.println("Use default port");

ClientSocketDemo demo = new ClientSocketDemo(args[0]);

}

else if(comd.length == 2)

{

System.out.println("Hostname and port are named by user");

ClientSocketDemo demo = new ClientSocketDemo(args[0],args[1]);

}

else System.out.println("ERROR");

}

}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

【ServerSocketDemo.java 服务器端Java源代码】

import java.net.*;

import java.io.*;

public class ServerSocketDemo

{

//声明ServerSocket类对象

ServerSocket serverSocket;

//声明并初始化服务器端监听端口号常量

public static final int PORT = 10745;

//声明服务器端数据输入输出流

DataInputStream in;

DataOutputStream out;

//声明InetAddress类对象ip,用于获取服务器地址及端口号等信息

InetAddress ip = null;

//声明字符串数组对象request,用于存储从客户端发送来的信息

String request[];

public ServerSocketDemo()

{

request = new String[3]; //初始化字符串数组

try

{

//获取本地服务器地址信息

ip = InetAddress.getLocalHost();

//以PORT为服务端口号,创建serverSocket对象以监听该端口上的连接

serverSocket = new ServerSocket(PORT);

//创建Socket类的对象socket,用于保存连接到服务器的客户端socket对象

Socket socket = serverSocket.accept();

System.out.println("This is server:"+String.valueOf(ip)+PORT);

//创建服务器端数据输入输出流,用于对客户端接收或发送数据

in = new DataInputStream(socket.getInputStream());

out = new DataOutputStream(socket.getOutputStream());

//接收客户端发送来的数据信息,并显示

request[0] = in.readUTF();

request[1] = in.readUTF();

request[2] = in.readUTF();

System.out.println("Received messages form client is:");

System.out.println(request[0]);

System.out.println(request[1]);

System.out.println(request[2]);

//向客户端发送数据

out.writeUTF("Hello client!");

out.writeUTF("Your ip is:"+request[1]);

out.writeUTF("Your port is:"+request[2]);

}

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

}

public static void main(String[] args)

{

ServerSocketDemo demo = new ServerSocketDemo();

}

}


文章标题:java的聊天代码大全 java的聊天代码大全
文章出自:http://pwwzsj.com/article/hpoddp.html