您的位置:首页 > 理论基础 > 计算机网络

网络编程应用:基于TCP协议【实现一个聊天程序】

2017-05-04 11:07 866 查看
要求:

基于TCP协议实现一个聊天程序,客户端发送一条数据,服务器端发送一条数据


客户端代码:

package Homework1;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Scanner;

public class Client {
public static void main(String[] args){

System.out.println("客户端已启动");
Socket socket=null;
InputStream is=null;
OutputStream os=null;
try {
//1.创建客户端套接字Socket对象
socket=new Socket("Localhost", 8888);

//2.创建与Socket对接的输入输出流对象
is=socket.getInputStream();
os=socket.getOutputStream();

//3.创建聊天用的Scanner对象
Scanner input=new Scanner(System.in);
byte[] bs=new byte[1024];

//4.给服务器(乙方)发送信息
while(true){
//输入要发送的数据
String string=input.next();
//将数据传输出去
os.write(string.getBytes());
os.flush();
//如果有一方回复了:bye,则表示聊天结束
if(string.equals("bye")){
break;
}

//5.接收服务器(乙方)回复的消息
int count=is.read(bs);
if(new String(bs,0,count).equals("bye")){
break;
}
System.o
1072b
ut.println("服务器回复:"+new String(bs,0,count));
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
if(socket!=null){
try {
socket.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(os!=null){
try {
os.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(is!=null){
try {
is.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

}
}


服务端:

package Homework1;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;

public class Server {
public static void main(String[] args){
System.out.println("服务端已启动");

ServerSocket serverSocket=null;
InputStream is=null;
OutputStream os=null;

try {
//1.创建服务器端ServerSocket对象
serverSocket=new ServerSocket(8888);

//2.得到Socket对象
socket=serverSocket.accept();
//3.得到与Socket对应的输入输出流
is=socket.getInputStream();
os=socket.getOutputStream();

//4.创建聊天使用的Scanner对象
Scanner input=new Scanner(System.in);
byte[] bs=new byte[1024];

while(true){
//5.接收客户端(甲方)信息
int count=0;
count=is.read(bs);

//如果客户端回复了:bye,表示结束聊天
if(new String(bs,0,count).equals("bye")){
break;
}
System.out.println("客户端说:"+new String(bs,0,count));

//6.回复客户端(甲方)
String string=input.next();
os.write(string.getBytes());
os.flush();
if(string.equals("bye")){
break;
}
}

} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
if(os!=null){
try {
os.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(is!=null){
try {
is.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(socket!=null){
try {
socket.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(serverSocket!=null){
try {
serverSocket.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}


运行结果:

客户端(甲方)聊天列表:



服务器端(乙方)聊天列表:

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