当前位置:编程学习 > JAVA >>

在java中的socket的客服端和服务端的免费代码

问题描述:java中的socket的客服端和服务端的代码 帮我编一个还有帮我注释

至于注释,我没有写,我觉得很简单

我给你讲讲原理吧

这个是个TCP简易的聊天程序

服务端启动后,就开始监听指定的端口号,这个程序是5000(你可以换)

然后如果有用户上线,则马上被服务器监测到,然后通过

d_output.writeObject("连结成功"); 像客户端发送消息,

客户端通过readObject()方法就可以读出服务端的消息

这个时候客户就可以和服务端联系了....

就这简单,具体的代码你不懂再发消息我

*******************服务端******************

import java.awt.*;
import java.awt.event.*;
import java.net.*;
import java.io.ObjectInputStream;
import java.io.*;
import javax.swing.*;

public class charServer extends JFrame
{
private ObjectInputStream d_input;
private ObjectOutputStream d_output;
private JTextField enter=new JTextField();
private JTextArea display=new JTextArea();
private JScrollPane js=new JScrollPane(display);
private int number=0;

public charServer()
{
super("聊天程序服务器端");
Container c=getContentPane();
enter.setEnabled(false);
enter.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent event)
{
try
{
String s=event.getActionCommand();
d_output.writeObject(s);
d_output.flush();
displayAppend("服务器:" + s);
enter.setText("");
}
catch (Exception ett)
{
System.err.println("Error:" + ett);
}
}
}
);
c.add(enter,BorderLayout.SOUTH);
c.add(js,BorderLayout.CENTER);
}

public void displayAppend(String s)
{
display.append(s + "\n");
display.setCaretPosition(display.getText().length());
enter.requestFocusInWindow();
}

public boolean isEndSession(String m)
{
if(m.equalsIgnoreCase("end"))
return(true);
else
return(false);
}

public void m_run()
{
try
{
ServerSocket server=new ServerSocket(5000);
String m;
while(true)
{
number++;
displayAppend("等待连接[" + number + "]");
Socket s=server.accept();
displayAppend("接收到客户端连接[" + number + "]");
d_output=new ObjectOutputStream(s.getOutputStream());
d_input=new ObjectInputStream(s.getInputStream());
d_output.writeObject("连结成功");
d_output.flush();
enter.setEnabled(true);
do
{
m=(String)d_input.readObject();
displayAppend("客户端:" + m);
}
while (!isEndSession(m));

d_output.writeObject("end");
d_output.flush();
enter.setEnabled(false);
d_output.close();
d_input.close();
s.close();
displayAppend("连结[" + number + "]结束");
}
}
catch (Exception et)
{
System.err.println("Error2:" + et);
displayAppend("连结[" + number + "]发处异常");
}
}

public static void main(String args[])
{
charServer app=new charServer();

app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
app.setSize(350,150);
app.setLocationRelativeTo(null);
app.setVisible(true);
app.m_run();
}

}

*****************客户端********************
import java.awt.*;
import java.awt.event.*;
import java.net.*;
import java.io.ObjectInputStream;
import java.io.*;
import javax.swing.*;

public class user extends JFrame
{
private ObjectInputStream d_input;
private ObjectOutputStream d_output;
private JTextField enter=new JTextField();
private JTextArea display=new JTextArea();
private JScrollPane js=new JScrollPane(display);

public user()
{
super("聊天程序客户端");
Container c=getContentPane();
enter.setEnabled(false);
enter.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent event)
{
try
{
String s=event.getActionCommand();
d_output.writeObject(s);
d_output.flush();
displayAppend("客户端:" + s);
enter.setText("");
}
catch (Exception ett)
{
System.err.println("Error:" + ett);
}
}
}
);
c.add(enter,BorderLayout.SOUTH);
c.add(js,BorderLayout.CENTER);
}

public void displayAppend(String s)
{
display.append(s + "\n");
display.setCaretPosition(display.getText().length());
enter.requestFocusInWindow();
}

public boolean isEndSession(String m)
{
if(m.equalsIgnoreCase("end"))
return(true);
else
return(false);
}

public void m_run(String host,int port)
{
try
{
displayAppend("尝试连接..");
Socket s=new Socket(host,port);
String m;
d_output=new ObjectOutputStream(s.getOutputStream());
d_input=new ObjectInputStream(s.getInputStream());
enter.setEnabled(true);
do
{
m=(String)d_input.readObject();
displayAppend("服务器端:" + m);
}
while (!isEndSession(m));

d_output.writeObject("end");
d_output.flush();
enter.setEnabled(false);
d_output.close();
d_input.close();
s.close();
System.exit(0);
}
catch (Exception et)
{
System.err.println("Error2:" + et);
// displayAppend("连结[" + number + "]发处异常");
}
}

public static void main(String args[])
{
user app=new user();

app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
app.setSize(350,150);
app.setLocationRelativeTo(null);
app.setVisible(true);
if(args.length==0)
app.m_run("localhost",5000);
else
app.m_run(args[0],5000);
}
}

更多精彩尽在站长资源库电脑知识网 www.zzzyk.com

站长资源库友情提示:为提高网站文章的质量,帮助更多朋友解决问题,希望大家在读完每一篇文章之后,留言或者在图片表情发表自己的看法!让我们共同探讨电脑知识问题,谢过!

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,