socket自由聊天程序
        这两天一直在改进一个用socket写的自由聊天程序,也就是在本机的控制台能收发消息的一个简单程序,可是在程序最后取出的时候老是有一个错误,本人改了两天了,也试着的、换了一种方法,可是也不见成效,所在暂且把代码贴出来。过两天脑壳清醒了再改改。(放电脑里怕被我删了,哈哈)看到本文的人如果能找出错误原因并告诉我的话,本人不胜感激哦! 
服务器端程序:

import java.io.*;
import java.net.*;
public class TestServer
{
private ServerSocket s;
private Socket s1;
private DataOutputStream dos;
private DataInputStream dis;
    
public void connect(){
try
{
s=new ServerSocket(8888);
s1=s.accept();
dos=new DataOutputStream(s1.getOutputStream());
dis=new DataInputStream(s1.getInputStream());
}
catch (IOException e)
{
e.printStackTrace();
}
}
public void close(){
try
{
dis.close();
dos.close();
s1.close();
s.close();
}
catch (IOException e)
{
e.printStackTrace();
}
}
public void createThread(){
new MyServerReader(this).start();
new MyServerWriter(this).start();
}
public DataOutputStream getDataOutputStream(){
return dos;
}
public DataInputStream getDataInputStream(){
return dis;
}
    
public static void main(String[] args)
{
TestServer ts=new TestServer();
ts.connect();
ts.createThread();
}
}
class MyServerReader extends Thread
{
private TestServer server;
public MyServerReader(TestServer server){
this.server=server;
}
public void run(){
DataInputStream dis=server.getDataInputStream();
            
String info;
try
{
while (true)
{
info=dis.readUTF();
                    
System.out.println("对方说:"+info);
if (info.equals("bye"))
{
System.out.println("对方下线,程序退出");
server.close();
System.exit(0);
}
}
}
catch (IOException e)
{
e.printStackTrace();
}
}
};
class MyServerWriter extends Thread
{
private TestServer server;
public MyServerWriter(TestServer server){
this.server=server;
}
public void run(){
DataOutputStream dos=server.getDataOutputStream();
            
InputStreamReader isr=new InputStreamReader(System.in);
BufferedReader br=new BufferedReader(isr);
String info;
try
{
while(true){
info=br.readLine();
dos.writeUTF(info);
if(info.equals("bye")){
System.out.println("自己下线,程序退出!");
server.close();
System.exit(0);
}
}
}
catch (IOException e)
{
e.printStackTrace();
}
            
}
客户端程序:
 Code
Code
服务器端程序:

import java.io.*;
import java.net.*;
public class TestServer
{
private ServerSocket s;
private Socket s1;
private DataOutputStream dos;
private DataInputStream dis;
public void connect(){
try
{
s=new ServerSocket(8888);
s1=s.accept();
dos=new DataOutputStream(s1.getOutputStream());
dis=new DataInputStream(s1.getInputStream());
}
catch (IOException e)
{
e.printStackTrace();
}
}
public void close(){
try
{
dis.close();
dos.close();
s1.close();
s.close();
}
catch (IOException e)
{
e.printStackTrace();
}
}
public void createThread(){
new MyServerReader(this).start();
new MyServerWriter(this).start();
}
public DataOutputStream getDataOutputStream(){
return dos;
}
public DataInputStream getDataInputStream(){
return dis;
}
public static void main(String[] args)
{
TestServer ts=new TestServer();
ts.connect();
ts.createThread();
}
}
class MyServerReader extends Thread
{
private TestServer server;
public MyServerReader(TestServer server){
this.server=server;
}
public void run(){
DataInputStream dis=server.getDataInputStream();
String info;
try
{
while (true)
{
info=dis.readUTF();
System.out.println("对方说:"+info);
if (info.equals("bye"))
{
System.out.println("对方下线,程序退出");
server.close();
System.exit(0);
}
}
}
catch (IOException e)
{
e.printStackTrace();
}
}
};
class MyServerWriter extends Thread
{
private TestServer server;
public MyServerWriter(TestServer server){
this.server=server;
}
public void run(){
DataOutputStream dos=server.getDataOutputStream();
InputStreamReader isr=new InputStreamReader(System.in);
BufferedReader br=new BufferedReader(isr);
String info;
try
{
while(true){
info=br.readLine();
dos.writeUTF(info);
if(info.equals("bye")){
System.out.println("自己下线,程序退出!");
server.close();
System.exit(0);
}
}
}
catch (IOException e)
{
e.printStackTrace();
}
}
客户端程序:
 Code
Code 
                     
                    
                 
                    
                 
 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号