您的位置:首页 > 编程语言 > Java开发

java 语言写的语音聊天程序

2006-11-21 11:07 435 查看
java语言写的语音聊天程序
受朋友之托,写了一个小的语音聊天程序,不敢独享,写出来供大家分享!

由于在上大学的时候,老师曾经教我们做过一个聊天程序,再说网络上的资料这么丰富,所以当时

同学让我给他写这个程序的时候,也就爽快地答应了!

这个程序分为两个部分:文字聊天程序和语音聊天程序。

文字聊天程序很简单,最主要的是使用Socket编程,利用TCP协议,写一个服务器端程序,在写一

个客户端程序.

在服器端new一个ServerSocket的对象server=newServerSocket(5000),

在new一个Socket的对象client=server.accept();

在客户端new一个Socket的对象client=newSocket("127.0.0.1",5000);

接下来就是建立输入流和输出流用于接受服务端和客户端的文字的传输。

在服务端和客户端程序中,分别使用InputStreamOutputStreamBufferedReader

Bufferedwriter进行文字流的接受。

这个个程序其实就是这么简单,然后我们使用Frame框架进行界面的显示就OK了!

说了这么多,让我们来看看具体的程序是怎么实现的。

服务端程序如下:


//服务端

importjava.io.*;
importjava.awt.*;
importjava.awt.event.*;
importjava.net.*;

publicclassServerextendsFrame
{
TextFieldtf=newTextField(20);
TextAreata=newTextArea();

Buttonsend=newButton("send");
ButtonvoiceChat=newButton("voiceChat");

ServerSocketserSocket;
Socketclient;

InputStreamin;
BufferedReaderbr;
OutputStreamout;
BufferedWriterbw;

publicServer()
{
super("Server");
add("North",tf);
add("Center",ta);
add("South",send);
add("East",voiceChat);
setBackground(Color.yellow);
setSize(250,250);
show();
addWindowListener(newWindowAdapter(){
publicvoidwindowClosing(WindowEvente){
dispose();
System.exit(0);
}
});
try
{
ServerSocketserSocket=newServerSocket(5000);
client=serSocket.accept();
ta.append("clienthost"+client.getInetAddress().getHostName()+"/n/n");
in=client.getInputStream();
br=newBufferedReader(newInputStreamReader(in));
out=client.getOutputStream();
bw=newBufferedWriter(newOutputStreamWriter(out));
}
catch(Exceptione)
{

}

while(true)
{
try
{
byte[]buf=newbyte[200];
in.read(buf);
Stringstr=newString(buf);
ta.append("Clientsay:"+str);
ta.append("/n");
}
catch(IOExceptione)
{
}
}

}

publicbooleanaction(Eventevt,Objectarg){
if(evt.target.equals(send))
{
try
{
Stringstr=tf.getText();
byte[]buf=str.getBytes();
tf.setText(null);
out.write(buf);
ta.append("Isay:"+str);
ta.append("/n");
}
catch(IOExceptionioe){}
}
elseif(evt.target.equals(voiceChat))
{
try{
//ServerSocketserSock=newServerSocket(6000);
//Socketcli=serSock.accept();
//Playbackplayer=newPlayback(cli);
//player.start();
}
catch(Exceptione){}
}
returntrue;
}

publicstaticvoidmain(String[]args)
{
Serverserver=newServer();
}
}
客户端程序如下:

//客户端
importjava.io.*; importjava.awt.*; importjava.awt.event.*; importjava.net.*;

publicclassClientextendsFrame
{
TextFieldtf=newTextField(20);
TextAreata=newTextArea();

Buttonsend=newButton("send");
ButtonvoiceChat=newButton("voiceChat");

Socketclient;
InputStreamin;
OutputStreamout;
BufferedReaderbr;
BufferedWriterbw;

publicClient()
{
super("Client");
add("North",tf);
add("Center",ta);
add("South",send);
add("East",voiceChat);
setSize(250,250);
show();
addWindowListener(newWindowAdapter(){
publicvoidwindowClosing(WindowEvente){
dispose();
System.exit(0);
}
});
try
{
Socketclient=newSocket("127.0.0.1",5000);
ta.append("Connectto:"+client.getInetAddress().getHostName()+"/n/n");
in=client.getInputStream();
br=newBufferedReader(newInputStreamReader(in));
out=client.getOutputStream();
bw=newBufferedWriter(newOutputStreamWriter(out));
}
catch(IOExceptionioe){}

while(true)
{
try
{
byte[]buf=newbyte[200];
in.read(buf);
Stringstr=newString(buf);
ta.append("Serversay:"+str);
ta.append("/n");
}
catch(IOExceptione){
System.out.print(e.getMessage());
}
}

}

publicbooleanaction(Eventevt,Objectarg){
if(evt.target.equals(send))
{
try
{
Stringstr=tf.getText();
byte[]buf=str.getBytes();
tf.setText(null);
out.write(buf);
ta.append("Isay:"+str);
ta.append("/n");
}
catch(IOExceptionioe){
System.out.print(ioe.getMessage());
}
}
elseif(evt.target.equals(voiceChat))
{

try
{
//Socketcli=newSocket("127.0.0.1",6000);
//Capturecap=newCapture(cli);
//cap.start();
}
catch(Exceptione)
{}
}
returntrue;
}

publicstaticvoidmain(String[]args)
{
Clientclient=newClient();
}
}
有了服务端和客户端程序,我们进行编译和运行就可以实现文字聊天了!

编译:javacServer.javaClient.java

运行:javaServer

javaClient

这样我们就可以看到一个服务端界面和客户端界面了,分别在输入框中输入hi,然后单击send

按钮就可以在客户端和服务端看到我们输入的文字了。

这样文字聊天的程序就完成了!

接下来就应该是语音聊天的程序的部分了!

待续........



                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: