java中的基于套结字(socket)的通信 一. 一个双人单方向通信例子

/*
* date: 2004-11-29 author:zhangyu6050;
* todo:一个双人单方向通信例子
* 本文件是主机方(Server)
* 提供主机与客户机的通信套节字:fromClient
* bugs:
*/

import java.net.*;
import java.io.*;

public class ChatServer {

public static void main(String[] args) {

final int port = 1775; //建立通信的主机的端口号
ServerSocket socServer = null;
Socket fromClient=null;//主机与客户机的通信套节字:fromClient
String message="hello,i'm server!";
try
{
socServer = new ServerSocket(port);
}
catch (IOException e)
{
System.err.println("Could not listen on port: "+port);
System.exit(1);
}

Socket clientSocket = null;
try {
fromClient = socServer.accept();
} catch (IOException e) {
System.err.println("Accept failed.");
System.exit(1);
}
try{
ObjectOutputStream oos=new ObjectOutputStream(fromClient.getOutputStream());

oos.writeObject(message);
oos.close();
fromClient.close();//关闭套节字前要关闭所有的流连接

} catch (IOException e1) {
e1.printStackTrace();
}
}

}

/*
* date: 2004-11-29
* author:zhangyu6050;
* todo: 一个双人单方向通信例子
* 本文件是客户方(client)
* bugs:
*/
import java.net.*;
import java.io.*;
public class ChatClient {
public static void main(String[] args) {
final int port=1775;
Socket socket=null;
try {
socket=new Socket("127.0.0.1",port);
ObjectInputStream ois=new ObjectInputStream(socket.getInputStream());
String mess=(String)ois.readObject();
System.out.print(mess);

} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
}

时间: 2024-08-01 11:21:02

java中的基于套结字(socket)的通信 一. 一个双人单方向通信例子的相关文章

java中方法定义的时候是不允许嵌套一个方法吗

问题描述 java中方法定义的时候是不允许嵌套一个方法吗 java中方法定义的时候是不允许嵌套一个方法吗内部类分为静态和非静态的吗 解决方案 是不允许的,已经明白了 解决方案二: java方法重写的时候,一个调用父类还是子类方法的问题 解决方案三: 静态内部类和非静态内部类的区别 解决方案四: 当然不允许了.....

java中Servlet类运行于哪里,如何运行一个Servlet类接受和发送数据

问题描述 java中Servlet类运行于哪里,如何运行一个Servlet类接受和发送数据 java中Servlet类运行于哪里,如何运行一个Servlet类接受和发送数据 解决方案 servlet运行在容器中,如tomcat等等,你可以创建一个javaweb工程,打包成war包之后,部署到tomcat,就可以使用servlet来做请求和响应了. 请关注 : http://git.oschina.net/wangkang/llsfw 希望能够帮到你.

Java中实现基于Aspectwerkz的AOP开发

一.AOP编程概览 面向对象编程技术进入软件开发的主流对软件的开发方式产生了极大的影响,开发者可以用一组实体以及这些实体之间的关系将系统形象地表示出来,这使得他们能够设计出规模更大.更复杂的系统,开发周期也比以前更短.OO开发的唯一问题是,它本质上是静态的,需求的细微变化就可能对开发进度造成重大影响. Aspect-Oriented Programming(AOP)是对OO技术的补充和完善,它允许开发者动态地修改静态的OO模型,构造出一个能够不断增长以满足新增需求的系统,就象现实世界中的对象会在

在 .NET 中开发基于 Chrome 内核的浏览器-创建一个简单浏览器

首先在 http://www.cftea.com/tools/downloads/Cef.zip 下载文件包. 一.将文件解压拖入到 Visual Studio 对应的 WinForm 项目中. 二.在解决方案中,在这些文件上右键,选择属性,在"复制到输出目录"中选择"始终复制"(不要忘了 locales 中的文件也要这样操作). 三.项目上右键添加引用:CefSharp.dll.CefSharp.WinForms.dll 四.在 WinForm 相应的位置使用类似

java中输出0到128的Unicode遇到了一个奇怪问题,不包含128,则不会输出

问题描述 packageapi.io;importjava.io.FileWriter;importjava.io.IOException;publicclassTestFileWriter{publicstaticvoidmain(String[]args){FileWriterwe=null;try{we=newFileWriter("d:\java\SuccessRoad\src\api\io\satisfy");for(inti=0;i<129;i++){//128为什么

Java中的final

这几天,在网上找了一些关于final的知识,当然并不全面,有的一时也没有很好的理解,先收集起来,理理思路,把不懂的画出来,以便更好地学习-- Java中的final关键字通常的指的是"这是无法改变的".它可能被做为三种的修饰词.------数据(基本类型,对象或者数组),方法(类方法.实例方法),类. <1>final应用于类 如果类被声明为final,则表示类不能被继承,也就是说不能有子类.因为不能有子类,所以final类不能被声明为abstract抽象类.所以final

如何在 Java 中正确使用 wait, notify 和 notifyAll – 以生产者消费者模型为例

wait, notify 和 notifyAll,这些在多线程中被经常用到的保留关键字,在实际开发的时候很多时候却并没有被大家重视.本文对这些关键字的使用进行了描述. 在 Java 中可以用 wait.notify 和 notifyAll 来实现线程间的通信..举个例子,如果你的Java程序中有两个线程--即生产者和消费者,那么生产者可以通知消费者,让消费者开始消耗数据,因为队列缓冲区中有内容待消费(不为空).相应的,消费者可以通知生产者可以开始生成更多的数据,因为当它消耗掉某些数据后缓冲区不再

在Java中使用Lambda表达式的技巧

在本文中,我们将展示一些在 Java 8 中不太为人所了解的 Lambda 表达式技巧及其使用限制.本文的主要的受众是 Java 开发人员,研究人员以及工具库的编写人员. 这里我们只会使用没有 com.sun 或其他内部类的公共 Java API,如此代码就可以在不同的 JVM 实现之间进行移植. 快速介绍 Lambda 表达式作为在 Java 8 中实现匿名方法的一种途径而被引入,可以在某些场景中作为匿名类的替代方案. 在字节码的层面上来看,Lambda 表达式被替换成了 invokedyna

JAVA中关于Map的九大问题

通常来说,Map是一个由键值对组成的数据结构,且在集合中每个键是唯一的.下面就以K和V来代表键和值,来说明一下java中关于Map的九大问题. 0.将Map转换为List类型 在java中Map接口提供了三种集合获取方式:Key set,,value set, and key-value set..它们都可以通过构造方法或者addAll()方法来转换为List类型.下面代码就说明了如何从Map中构造ArrayList: // key list List keyList = new ArrayLi