Java网络编程客户端和服务器通信
在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网络编程客户端和服务器通信的更多相关文章
- Java网络编程(客户端和服务端原理)
运行下面的程序,浏览器端输入自己主机的IP地址+端口号(8888),会看到服务器返回的数据内容,Eclipse控制台会打印显示收到的信息, 通过我们自定义的服务器,可以看到浏览器端向服务器发送的请求信 ...
- java网络编程客户端与服务端原理以及用URL解析HTTP协议
常见客户端与服务端 客户端: 浏览器:IE 服务端: 服务器:web服务器(Tomcat),存储服务器,数据库服务器. (注:会用到Tomact服务器,在webapps下有一个自己创建的目录myweb ...
- Java网络编程UDP通信原理
前言 继续今天我们的Java网络编程--TCP和UDP通信 一.TCP和UDP概述 传输层通常以TCP和UDP协议来控制端点与端点的通信 TCP UDP 协议名称 传输控制协议 用户数据包协议 是 ...
- Java 网络编程(五) 使用TCP/IP的套接字(Socket)进行通信
链接地址:http://www.cnblogs.com/mengdd/archive/2013/03/10/2952616.html 使用TCP/IP的套接字(Socket)进行通信 套接字Socke ...
- Java网络编程和NIO详解1:JAVA 中原生的 socket 通信机制
Java网络编程和NIO详解1:JAVA 中原生的 socket 通信机制 JAVA 中原生的 socket 通信机制 摘要:本文属于原创,欢迎转载,转载请保留出处:https://github.co ...
- Java网络编程:QQ邮件发送客户端程序设计
目录 一.目标介绍 1.认识SMTP(邮件传输协议) 2.POP3(邮件接收协议) 二.基于Base64编码邮箱及授权码 1.开通QQ邮箱SMTP/POP3服务 2.Java编写BASE64编码程序 ...
- 网络编程 --- URLConnection --- 读取服务器的数据 --- java
使用URLConnection类获取服务器的数据 抽象类URLConnection表示一个指向指定URL资源的活动连接,它是java协议处理器机制的一部分. URL对象的openConnection( ...
- Java 网络编程学习总结
新手一枚,Java学习中,把自己学习网络编程的知识总结一下,梳理下知识,方便日后查阅,高手莫进. 本文的主要内容: [1] 网络编程认识 [2] TCP/IP编程 ...
- java 网络编程复习(转)
好久没有看过Java网络编程了,现在刚好公司有机会接触,顺便的拾起以前的东西 参照原博客:http://www.cnblogs.com/linzheng/archive/2011/01/23/1942 ...
随机推荐
- Linux批量“解压”JAR文件
当你需要”解压“很多jar文件时,可以通过很多方式进行,比如下面这种 1,列出每一个jar文件名,逐个展开 for i in $(ls *sour*.jar);do jar xvf $i;done
- JAVA中跨平台分隔符
在Windows下的路径分隔符和Linux下的路径分隔符是不一样的,当直接使用绝对路径时,跨平台会暴出“No such file or diretory”的异常. 比如说要在temp目录下建立一个te ...
- openGL 纹理05
纹理(Texture) 为了能够把纹理映射(Map)到三角形上,我们需要指定三角形的每个顶点各自对应纹理的哪个部分. 这样每个顶点就会关联着一个纹理坐标(Texture Coordinate) 用来标 ...
- html收藏
全屏显示<input type="button" name="fullscreen" value="全屏显示" onclick=&qu ...
- JS获取页面数据执行Ajax请求
下面这个例子展示了如何使用js获取页面中元素的值,并且将这些值作为参数执行Ajax请求. $("#submit-task").bind("click", fun ...
- 如何POST一个JSON格式的数据给java接口,获得返回数据
/** * 模拟post进行url请求 * @param string $url * @param json $post_data */ public function request_post($u ...
- Bootstrap 简介(Web前端CSS框架)
目录1.简介2.特点3.组件4.Javascript插件5.定制自己的框架代码6.Bootstrap Less 1.简介Bootstrap是Twitter推出的一个开源的用于前端开发的工具包.它由Tw ...
- redis实现发布订阅
订阅者 #!/usr/bin/env python # -*- coding:utf-8 -*- import redis r = redis.Redis(host='192.168.11.119') ...
- 03-nginx虚拟主机配置
不想用kill命令控制nginx也行,但是其他命令没有信号的命令丰富.重读配置文件不用重启nginx(软重启).完全可以使用stop(强制退出).quick(优雅退出).reopen(重新打开日志). ...
- volatile和 锁的区别
Volatile: 当把变量声明为volatile类型后,编译器和运行时都会注意到这个变量是共享的,因此不会将该变量上的操作与其它内存操作一起重排序.volatile变量不会被缓存在寄存器或者对其他处 ...