java 语言写的语音聊天程序
受朋友之托,写了一个小的语音聊天程序,不敢独享,写出来供大家分享!
由于在上大学的时候,老师曾经教我们做过一个聊天程序,再说网络上的资料这么丰富,所以当时
同学让我给他写这个程序的时候 ,也就爽快地答应了!
这个程序分为两个部分:文字聊天程序和语音聊天程序。
文字聊天程序很简单,最主要的是使用Socket编程,利用TCP协议,写一个服务器端程序,在写一
个客户端程序.
在服器端 new 一个ServerSocket的对象server=new ServerSocket(5000) ,
在new一个Socket的对象client=server.accept();
在客户端new 一个Socket的对象client = new Socket("127.0.0.1",5000);
接下来就是建立输入流和输出流用于接受服务端和客户端的文字的传输。
在服务端和客户端程序中,分别使用InputStream OutputStream BufferedReader
Bufferedwriter 进行文字流的接受。
这个个程序其实就是这么简单,然后我们使用Frame框架进行界面的显示就OK了!
说了这么多,让我们来看看具体的程序是怎么实现的。
服务端程序如下:
//服务端import java.io.*;
import java.awt.*;
import java.awt.event.*;
import java.net.*;public class Server extends Frame
{
TextField tf=new TextField(20);
TextArea ta=new TextArea();
Button send=new Button("send");
Button voiceChat=new Button("voiceChat");
ServerSocket serSocket;
Socket client;
InputStream in;
BufferedReader br;
OutputStream out;
BufferedWriter bw;
public Server()
{
super("Server");
add("North",tf);
add("Center",ta);
add("South",send);
add("East",voiceChat);
setBackground(Color.yellow);
setSize(250,250);
show();
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
dispose();
System.exit(0);
}
});
try
{
ServerSocket serSocket=new ServerSocket(5000);
client=serSocket.accept();
ta.append("client host"+client.getInetAddress().getHostName()+"/n/n");
in=client.getInputStream();
br=new BufferedReader(new InputStreamReader(in));
out=client.getOutputStream();
bw=new BufferedWriter(new OutputStreamWriter(out));
}
catch(Exception e)
{
}
while(true)
{
try
{
byte[] buf=new byte[200];
in.read(buf);
String str=new String(buf);
ta.append("Client say:"+str);
ta.append("/n");
}
catch(IOException e)
{
}
}
}
public boolean action (Event evt, Object arg) {
if(evt.target.equals(send))
{
try
{
String str=tf.getText();
byte[] buf=str.getBytes();
tf.setText(null);
out.write(buf);
ta.append("I say:"+str);
ta.append("/n");
}
catch(IOException ioe){}
}
else if(evt.target.equals(voiceChat))
{
try{
//ServerSocket serSock=new ServerSocket(6000);
//Socket cli=serSock.accept();
//Playback player=new Playback(cli);
//player.start();
}
catch(Exception e){}
}
return true;
}public static void main(String[] args)
{
Server server=new Server();
}
}
客户端程序如下://客户端
import java.io.*;
import java.awt.*;
import java.awt.event.*;
import java.net.*;public class Client extends Frame
{
TextField tf=new TextField(20);
TextArea ta=new TextArea();
Button send=new Button("send");
Button voiceChat=new Button("voiceChat");
Socket client;
InputStream in;
OutputStream out;
BufferedReader br;
BufferedWriter bw;
public Client()
{
super("Client");
add("North",tf);
add("Center",ta);
add("South",send);
add("East",voiceChat);
setSize(250,250);
show();
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
dispose();
System.exit(0);
}
});
try
{
Socket client=new Socket("127.0.0.1",5000);
ta.append("Connect to:"+client.getInetAddress().getHostName()+"/n/n");
in=client.getInputStream();
br=new BufferedReader(new InputStreamReader(in));
out=client.getOutputStream();
bw=new BufferedWriter(new OutputStreamWriter(out));
}
catch(IOException ioe){}
while(true)
{
try
{
byte[] buf=new byte[200];
in.read(buf);
String str=new String(buf);
ta.append("Server say:"+str);
ta.append("/n");
}
catch(IOException e){
System.out.print(e.getMessage());
}
}
}
public boolean action (Event evt, Object arg) {
if(evt.target.equals(send))
{
try
{
String str=tf.getText();
byte[] buf=str.getBytes();
tf.setText(null);
out.write(buf);
ta.append("I say:"+str);
ta.append("/n");
}
catch(IOException ioe){
System.out.print(ioe.getMessage());
}
}
else if(evt.target.equals(voiceChat))
{
try
{
//Socket cli=new Socket("127.0.0.1",6000);
//Capture cap=new Capture(cli);
//cap.start();
}
catch(Exception e)
{}
}
return true;
}
public static void main(String[] args)
{
Client client=new Client();
}
}
有了服务端和客户端程序,我们进行编译和运行就可以实现文字聊天了!编译: javac Server.java Client.java运行: java Serverjava Client这样我们就可以看到一个服务端界面和客户端界面了,分别在输入框中输入hi,然后单击send按钮就可以在客户端和服务端看到我们输入的文字了。这样文字聊天的程序就完成了!接下来就应该是语音聊天的程序的部分了!待续........