在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");
} }

最新文章

  1. Java 类初始化顺序
  2. Windows系统
  3. Cornerstone详细操作
  4. Android Error:warning: Ignoring InnerClasses attribute for an anonymous inner class
  5. hadoop2.2基准测试
  6. cocos2d-x 遇到的错误与解决方法。make: *** No rule to make target `/cygdrive/d/android/cocos2d-x-master/T12/proj.android/../../cocos2dx/xxxxx.cpp'
  7. C++面试题:++i和i++哪个效率高?
  8. stm32F10x复习-1
  9. Django web框架-----win10搭建django2.1.7开发环境,定义简易视图及网址
  10. c# 使用 namedpipe 通信
  11. [Jenkins]JDK版本过高导致的java.io.IOException: Remote call on xxxx failed
  12. [译]ABP vNext介绍
  13. 不存在具有键“test”的“IEnumerable<SelectListItem>”类型的 ViewData 项。
  14. relativeURL 相对URL的坑
  15. linux操作系统基础讲解
  16. BZOJ 2761 不重复数字 set
  17. [转载]JDBC/Spring/MyBatis性能比较
  18. python之路----常用模块二
  19. Linux文件IO与通用块层的请求合并
  20. [linux] tmux终端复用神器 [转载]

热门文章

  1. JS判断IE,FF,Opera,Safari等浏览器类型
  2. ubuntu主目录下的中文文件夹名改回英文
  3. mysql之数据类型以及操作数据表
  4. 6410中的PWM 定时器
  5. elasticsearch配置小记(转)
  6. java简单的测试方法执行了多少时间
  7. javascript-文档结构遍历
  8. cocos2d-x 初探helloWorld
  9. SQLAlchemy(ORM框架)
  10. jquery中children()