编写一个Java网络应用程序,该应用分服务器端程序和客户端程序两部分
编写一个Java网络应用程序,该应用分服务器端程序和客户端程序两部分。服务器程序启动后,监听端口5678的请求;客户端程序启动后,向服务器端口5678发送请求。服务器不断...
编写一个Java网络应用程序,该应用分服务器端程序和客户端程序两部分。服务器程序启动后,监听端口5678的请求;客户端程序启动后,向服务器端口5678发送请求。服务器不断接收客户机所写入的信息,并且服务器也会做出"Receive"为回应,告知客户机已接收到消息。要求:服务器程序采用多线程开发,允许多个客户端程序同时连接。客户机发送"End"字符串时,客户端程序退出。(服务端程序和客户端程序分别命名为Server.java和Client.java)
展开
3个回答
展开全部
我给你一个类似的代码,你自己改一下就可以了,我不给你该了。希望对你有所帮助!
<----------------------服务器端------------------------------->
//实现多线程的网络连接
package cn.socket;
import java.io.*;
import java.net.*;
public class SocketServerTrue {
public SocketServerTrue()
{
try {
//服务器开启一个端口
System.out.println("等待连接...");
ServerSocket ss= new ServerSocket(8090);
//等待连接,返回socket类型的对象
Socket s=ss.accept();
System.out.println("连接成功,等待客户端输入信息!");
//得到客户端的信息
InputStreamReader isr=new InputStreamReader(s.getInputStream());
BufferedReader br=new BufferedReader(isr);
//向客户端传递信息
PrintWriter pw=new PrintWriter(s.getOutputStream(),true);
//实现从控制台输入数据
InputStreamReader isrS=new InputStreamReader(System.in);
BufferedReader brS=new BufferedReader(isrS);
while(true)
{
//得到客户端的信息
String info=br.readLine();
//判断是否结束
if(info.equals("bye"))
{
System.out.println("对话结束!");
s.close();
break;
}
System.out.println("对方说:"+info);
//给客户端传递信息
String infoC=brS.readLine();
pw.println(infoC);
if(infoC.equals("bye"))
{
System.out.println("对话结束!");
s.close();
break;
}
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
SocketServerTrue ssm=new SocketServerTrue();
}
}
<---------------------------客户端-------------------------->
//客户端的(多线程)
package cn.socket;
import java.io.*;
import java.net.*;
public class SocketClientTrue {
public SocketClientTrue()
{
//去连接服务器
try {
Socket s=new Socket("127.0.0.1",8090);
System.out.println("连接成功,给服务器说话!");
//向服务器传递的信息
PrintWriter pw=new PrintWriter(s.getOutputStream(),true);
//得到服务器信息
InputStreamReader isr=new InputStreamReader(s.getInputStream());
BufferedReader br=new BufferedReader(isr);
//从控制台输入信息
InputStreamReader isrC=new InputStreamReader(System.in);
BufferedReader brC=new BufferedReader(isrC);
while(true)
{
//给服务器说话
String infoS=brC.readLine();
pw.println(infoS);
if(infoS.equals("bye"))
{
System.out.println("对话结束!");
s.close();
break;
}
//得到服务器的信息
String info=br.readLine();
if(info.equals("bye"))
{
System.out.println("对话结束!");
s.close();
break;
}
System.out.println("对方说:"+info);
}
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
SocketClientTrue scm=new SocketClientTrue();
}
}
;
<----------------------服务器端------------------------------->
//实现多线程的网络连接
package cn.socket;
import java.io.*;
import java.net.*;
public class SocketServerTrue {
public SocketServerTrue()
{
try {
//服务器开启一个端口
System.out.println("等待连接...");
ServerSocket ss= new ServerSocket(8090);
//等待连接,返回socket类型的对象
Socket s=ss.accept();
System.out.println("连接成功,等待客户端输入信息!");
//得到客户端的信息
InputStreamReader isr=new InputStreamReader(s.getInputStream());
BufferedReader br=new BufferedReader(isr);
//向客户端传递信息
PrintWriter pw=new PrintWriter(s.getOutputStream(),true);
//实现从控制台输入数据
InputStreamReader isrS=new InputStreamReader(System.in);
BufferedReader brS=new BufferedReader(isrS);
while(true)
{
//得到客户端的信息
String info=br.readLine();
//判断是否结束
if(info.equals("bye"))
{
System.out.println("对话结束!");
s.close();
break;
}
System.out.println("对方说:"+info);
//给客户端传递信息
String infoC=brS.readLine();
pw.println(infoC);
if(infoC.equals("bye"))
{
System.out.println("对话结束!");
s.close();
break;
}
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
SocketServerTrue ssm=new SocketServerTrue();
}
}
<---------------------------客户端-------------------------->
//客户端的(多线程)
package cn.socket;
import java.io.*;
import java.net.*;
public class SocketClientTrue {
public SocketClientTrue()
{
//去连接服务器
try {
Socket s=new Socket("127.0.0.1",8090);
System.out.println("连接成功,给服务器说话!");
//向服务器传递的信息
PrintWriter pw=new PrintWriter(s.getOutputStream(),true);
//得到服务器信息
InputStreamReader isr=new InputStreamReader(s.getInputStream());
BufferedReader br=new BufferedReader(isr);
//从控制台输入信息
InputStreamReader isrC=new InputStreamReader(System.in);
BufferedReader brC=new BufferedReader(isrC);
while(true)
{
//给服务器说话
String infoS=brC.readLine();
pw.println(infoS);
if(infoS.equals("bye"))
{
System.out.println("对话结束!");
s.close();
break;
}
//得到服务器的信息
String info=br.readLine();
if(info.equals("bye"))
{
System.out.println("对话结束!");
s.close();
break;
}
System.out.println("对方说:"+info);
}
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
SocketClientTrue scm=new SocketClientTrue();
}
}
;
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询