Java网络编程客户端和服务器通信
2024-09-29 23:04:52
在java网络编程中,客户端和服务器的通信例子:
先来服务器监听的代码
package com.server; import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.ServerSocket;
import java.net.Socket; import com.jim.Student; public class QQServer { /**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("Start Server...");
QQServer server = new QQServer();
}
//构造函数
public QQServer()
{
Socket s;
//创建ServerSocket在9999号端口监听
ServerSocket ss = null;
try {
ss = new ServerSocket(9999); } catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("服务器正在监听........");
try {
System.out.println("开始等待连接...");
s = ss.accept();//阻塞,等待连接
System.out.println("客户端连接成功"); //接收流
ObjectInputStream ois=new ObjectInputStream(s.getInputStream()); //发送流
ObjectOutputStream oos = new ObjectOutputStream(
s.getOutputStream()); //接收Student对象
Student stu = (Student) ois.readObject();
System.out.println(stu.getName());
//发送Student对象
oos.writeObject(new Student("Server")); } catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} }
客户端的代码:
package com.client; import java.io.*;
import java.net.*; import com.jim.Student; public class QQClient { /**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("Start QQClient...");
try {
QQClient client = new QQClient();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} //构造函数
public QQClient() throws IOException
{
//String address="127.0.0.1";
//int port = 9999 ;
try {
Socket s = new Socket("127.0.0.1", 9999);
Student stu = new Student("Jim");
//发送信息给服务器
ObjectOutputStream oos=new ObjectOutputStream(s.getOutputStream()); //ObjectInputStream ois=new ObjectInputStream(s.getInputStream());
//接受服务器传来的信息
ObjectInputStream ois=new ObjectInputStream(s.getInputStream()); //发送对象到服务器
//oos.writeObject(new Student("OKK"));
oos.writeObject(stu); //接收服务器返回的对象
Student re_stu = (Student)ois.readObject();
System.out.println(re_stu.getName()); } catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
} } }
在客户端和服务传输的对象对象
package com.jim; public class Student implements java.io.Serializable{ private String name ;
private int age;
private String address; public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public int getAge() {
return age;
} public void setAge(int age) {
this.age = age;
} public String getAddress() {
return address;
} public void setAddress(String address) {
this.address = address;
} /**
* @param name
* 构造方法
*/
public Student(String name){
this.name = name;
} /**
* @param
*
*/
public void study(){
System.out.println(this.name + " is studing");
} }
最新文章
- Java 类初始化顺序
- Windows系统
- Cornerstone详细操作
- Android Error:warning: Ignoring InnerClasses attribute for an anonymous inner class
- hadoop2.2基准测试
- cocos2d-x 遇到的错误与解决方法。make: *** No rule to make target `/cygdrive/d/android/cocos2d-x-master/T12/proj.android/../../cocos2dx/xxxxx.cpp'
- C++面试题:++i和i++哪个效率高?
- stm32F10x复习-1
- Django web框架-----win10搭建django2.1.7开发环境,定义简易视图及网址
- c# 使用 namedpipe 通信
- [Jenkins]JDK版本过高导致的java.io.IOException: Remote call on xxxx failed
- [译]ABP vNext介绍
- 不存在具有键“test”的“IEnumerable<;SelectListItem>;”类型的 ViewData 项。
- relativeURL 相对URL的坑
- linux操作系统基础讲解
- BZOJ 2761 不重复数字 set
- [转载]JDBC/Spring/MyBatis性能比较
- python之路----常用模块二
- Linux文件IO与通用块层的请求合并
- [linux] tmux终端复用神器 [转载]