模拟启动多线程,获得客户端IP

public class LoginThread extends Thread {
Socket socket=null;
//每启动一个线程,对应Socket
public LoginThread(Socket socket){
this.socket=socket;
}
//启动线程,即响应客户请求
public void run(){
try {
//打开输入输出流
InputStream is=socket.getInputStream();
OutputStream os=socket.getOutputStream();
//反序列化
ObjectInputStream ois=new ObjectInputStream(is);
//获取客户端信息,即从输入流读取信息
//BufferedReader br=new BufferedReader(new InputStreamReader(ois));
User user=(User)ois.readObject();
if(!(user==null)){
System.out.println("我是服务器,客户登录信息为:"+user.getLoginName()+","+user.getPwd());
}
//给客户端一个响应,即向输出流写入信息
String reply="欢迎你,登录成功!";
os.write(reply.getBytes());
//关闭资源
ois.close();
os.close();
is.close();
socket.close();
}   catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}catch (ClassNotFoundException e) {
e.printStackTrace();
}
}

}
*************************************************************************************
public class LoginServer {
public static void main(String[] args)   {
try {
//建立一个服务器Socket(ServerSocket)指定端口并开始监听
ServerSocket serverSocket=new ServerSocket(8800);
//使用accept()方法等待客户端触发通信
Socket socket=null;
//监听一直进行中
while(true){
socket=serverSocket.accept();
LoginThread LoginThread=new LoginThread(socket);
LoginThread.start();
}
}   catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
*************************************************************************************

public class LoginClient {
public static void main(String[] args) {
try {
//建立客户端Socket连接,指定服务器的位置以及端口
Socket socket=new Socket("localhost",8800);
//打开输入输出流
OutputStream os=socket.getOutputStream();
InputStream is=socket.getInputStream();
//对象序列化
ObjectOutputStream oos=new ObjectOutputStream(os);
//发送客户端登录信息,即向输出流写入信息
User user=new User();
user.setLoginName("Tom");
user.setPwd("123456");
oos.writeObject(user);
socket.shutdownOutput();
//接收服务器段的响应,即从输入流读取信息
String reply=null;
BufferedReader br=new BufferedReader(new InputStreamReader(is));
while(!((reply=br.readLine())==null)){
System.out.println("我是客户端,服务器的响应为:"+reply);
}
//4.关闭资源
oos.close();
is.close();
os.close();
socket.close();
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
*********************************************************************************
public class LoginClient2 {
public static void main(String[] args) {
try {
//建立客户端Socket连接,指定服务器的位置以及端口
Socket socket=new Socket("localhost",8800);
//打开输入输出流
OutputStream os=socket.getOutputStream();
InputStream is=socket.getInputStream();
//对象序列化
ObjectOutputStream oos=new ObjectOutputStream(os);
//发送客户端登录信息,即向输出流写入信息
User user=new User();
user.setLoginName("Kate");
user.setPwd("654321");
oos.writeObject(user);
socket.shutdownOutput();
//接收服务器段的响应,即从输入流读取信息
String reply=null;
BufferedReader br=new BufferedReader(new InputStreamReader(is));
while(!((reply=br.readLine())==null)){
System.out.println("我是客户端,服务器的响应为:"+reply);
}
//4.关闭资源
oos.close();
is.close();
os.close();
socket.close();
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
***********************************************************************************
public class User implements Serializable{
private String loginName; //用户名
private String pwd; //用户密码
public User() {
}
public User(String loginName, String pwd) {
super();
this.loginName = loginName;
this.pwd = pwd;
}
public String getLoginName() {
return loginName;
}
public void setLoginName(String loginName) {
this.loginName = loginName;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
}
*****************************************************************************

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值