如此聊天一个客户端 一个服务端 怎么通过流来处理 使其可以正常进行聊天 一句一句的 不需要考虑线程
解决方案 »
- 关于java中文乱码的问题
- 连接数据库
- 类似windows的文件路径选择的对话框在java如何实现
- Java下的ARP攻击实现(Jpcap)
- 各位大哥,请教在java中什么是交易?或什么是交易码?没有交易码就不能编码么?多谢!
- 请问如何用NIO把网络上的文件读到本地一个文件中?
- 请大神帮忙看看这个空指针异常
- 问题
- java用odbc连接数据库后,select * from Table时怎么锁住表?
- question for package ???
- 有人用过zeroMQ吗?一直提示C:\Program Files\Java\jre6\bin\jzmq.dll: Can't find dependent li
- 事件监听
import java.io.DataInputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
public class ServerTest
{
ServerSocket ss = null;
Socket s =null;
DataInputStream c = null;
String str = null;
public void Lunch()
{
try
{
ss = new ServerSocket(5656);
}
catch (IOException e1)
{
e1.printStackTrace();
}
try
{
this.s = ss.accept(); //这里有SocketException异常
System.out.println("新的客户端已经连接");
Client a = new Client(s);
new Thread(a).start();
}
catch (IOException e)
{
e.printStackTrace();
}finally
{
try
{
ss.close();
}catch (IOException e)
{
e.printStackTrace();
}
}
}
class Client implements Runnable{
private Socket s;
Client(Socket s){
this.s = s;
try {
c = new DataInputStream(s.getInputStream());
} catch (IOException e) {
e.printStackTrace();
}
}
public void run()
{
try
{
while(true)
{
str = c.readUTF();
System.out.println(str);
}
}
catch (IOException e) {
System.out.println("已断开连接");
}
finally
{
try
{
if(c != null)
c.close();
if(s !=null)
s.close();
}catch (IOException e)
{
e.printStackTrace();
}
}
}
}
public static void main(String[] args)
{
new ServerTest().Lunch();
}
}
import java.awt.Frame;
import java.awt.TextArea;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.net.Socket;
import java.io.*;public class ClientTest {
DataOutputStream c = null;
TextField t1 = new TextField();
TextArea t2 = new TextArea();
Frame a = new Frame();
String str = null;
Socket s = null;
TextLister tt = new TextLister();
public void add(){
a.add(t1 , "South");
a.add(t2 , "North");
a.pack();
}
public void close(){
a.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
try {
s.close();
c.close();
} catch (IOException e1) {
e1.printStackTrace();
}
System.exit(0);
}
});
}
public void addText(){
t1.addActionListener(tt);
}
public void Lunch(){
this.add();
this.close();
this.addText();
a.setVisible(true);
}
class TextLister implements ActionListener{public void actionPerformed(ActionEvent e) {
try {
s = new Socket("127.0.0.1" , 5656);
c = new DataOutputStream(s.getOutputStream());
} catch (IOException e1) {
System.out.println("找不到服务器");
}
str = t1.getText();
t2.setText(str);
try {
c.writeUTF(str);
c.flush();
} catch (IOException e1) {
System.out.println("服务器无法接受");
}
t1.setText("");
}
}
public static void main(String[] args) {
new ClientTest().Lunch();
}
}