先贴上两段代码:
服务端ServerCode.class的
public class ServerCode {
public static int portNo = 3333;
public static void main(String[] args) throws IOException{
ServerSocket ss = new ServerSocket(portNo);
System.out.println("The Server is start: " + ss);
Socket s = ss.accept();
try{
System.out.println("Accept the Client: " + s);
BufferedReader in = new BufferedReader(new InputStreamReader(s.getInputStream()));
PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(s.getOutputStream())),true);
while(true){
String str = in.readLine();
if(str.equals("byebye")){
break;
}
System.out.println("In Server reveived the info: " + str);
out.println(str);
}
}catch(Exception e){
e.printStackTrace();
}finally{
System.out.println("close the Server socket and the io.");
ss.close();
s.close();
}
}
}
客户端 ClientCode的
public class ClientCode {
public static String clientName = "xiaodai";
public static int portNo = 3333;
public static void main(String[] args) throws IOException {
InetAddress addr = InetAddress.getByName("localhost");
Socket socket = new Socket(addr, portNo);
try{
System.out.println("socket-----------"+socket);
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())),true);
out.println("Hello Server,I am "+clientName);
String str = in.readLine();
System.out.println(str);
out.println("byebye");
}catch(Exception e){
e.printStackTrace();
}finally{
System.out.println("close the Client socket and the io.");
socket.close();
}
}
}
问题的引出:
首先说明下,这两段代码是我在网上下载的一篇学习socket编程上的,问题出现在客户端ClientCode这个类中,里面有这样两段代码out.println("Hello Server,I am "+clientName);和out.println("byebye");刚开始我没注意,把out.println写成了out.print,结果程序就卡住了,finally部分都执行不了,后面我仔细对照文章看了下,唯一不同的就是这了,所以抱着试试的心态改过来了,没想到居然就可以了。
一点想法:
通过这个例子我就在想,以前吧很少会注意print和println的区别,因为感觉他们的区别就是多了个换行,但在这里感觉print跟println区别挺大的,println比print多执行了一次按回车键的操作,因为只有这样才能解释当我们在控制台输入东西以后按回车键才能接收,用print就一直在输入状态,而没有提交状态。
呵呵,这是我自己的一点想法,或许这都不算个问题了,只是觉得自己第一次发现,或者第一次想到,所有记录下。欢迎批评指正。
分享到:
相关推荐
总之,"一些比较有意思的Java小程序"是一个很好的学习资源,它提供了实践和探索Java编程的多种途径。对于那些想要踏入Java世界的新手来说,这是一个很好的起点,也是不断提升编程技能的良好平台。
8. **网络编程**:可能包含Socket编程的例子,用于客户端和服务器之间的通信。 9. **GUI编程**:Java的Swing或JavaFX库可以用于创建图形用户界面,如按钮、文本框、菜单等。 10. **数据库操作**:可能包含JDBC...
Java是一种广泛使用的编程语言,以其跨平台...无论是对初学者还是有经验的开发者,这都是一个极好的学习和锻炼平台。在实践中不断探索,不断提升自己的编程能力和问题解决技巧,对于成为一名优秀的Java程序员至关重要。
【标题】"Java局域网坦克大战"是一个基于...综上所述,"Java局域网坦克大战"是一个综合性的项目,涵盖了Java编程、网络通信、数据库管理和游戏设计等多个方面的知识,对于学习和提升Java技能来说是一个很好的实践平台。
嵌入式软件开发是一个复杂的领域,需要掌握多种编程语言、开发工具和技术。以下是根据给定的文件信息,生成的相关知识点: 1. 嵌入式软件开发Language: * C 编程语言:掌握 C 语言的核心思想和技巧,对 C 语言的...
7. **网络编程**:如果涉及多人在线游戏,将介绍如何使用Java的Socket编程实现网络通信。 8. **调试和优化**:学习如何调试代码,找出并修复错误,以及如何优化游戏性能。 9. **实战项目**:通过实际开发小型游戏...
一个目标文件,演示Socket的使用。 Java 组播组中发送和接受数据实例 3个目标文件。 Java读写文本文件的示例代码 1个目标文件。 java俄罗斯方块 一个目标文件。 Java非对称加密源码实例 1个目标文件 摘要:Java...
内容索引:VC/C++源码,网络相关,UDP TCP UDP高级编程:一个VC++服务端程序,可选择Socket类型,是UDP还是TCP,这仅是个服务器端程序,不过也可发送消息哦,例子虽然简单了点,但可以说明不少的问题,有意思的自己...
标题"Java手机游戏开发专辑.rar"表明这是一个关于Java手机游戏开发的资源集合,可能包含教程、源代码示例、工具集或其他辅助材料。这样的资源对于初学者或有经验的开发者来说都是宝贵的,它们可以帮助理解游戏开发...
一个简单的CS模式的聊天软件,用socket实现,比较简单。 凯撒加密解密程序 1个目标文件 1、程序结构化,用函数分别实现 2、对文件的加密,解密输出到文件 利用随机函数抽取幸运数字 简单 EJB的真实世界模型(源...
一个简单的CS模式的聊天软件,用socket实现,比较简单。 凯撒加密解密程序 1个目标文件 1、程序结构化,用函数分别实现 2、对文件的加密,解密输出到文件 利用随机函数抽取幸运数字 简单 EJB的真实世界模型(源...
一个简单的CS模式的聊天软件,用socket实现,比较简单。 凯撒加密解密程序 1个目标文件 1、程序结构化,用函数分别实现 2、对文件的加密,解密输出到文件 利用随机函数抽取幸运数字 简单 EJB的真实世界模型(源...
在有状态SessionBean中,用累加器,以对话状态存储起来,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证Bean正常被激活和钝化,EJB对象是用完毕,从内存中清除…… Java Socket 聊天...
在有状态SessionBean中,用累加器,以对话状态存储起来,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证Bean正常被激活和钝化,EJB对象是用完毕,从内存中清除…… Java Socket 聊天...
7. **网络编程**:Java的Socket编程允许创建网络应用,如聊天室、文件传输等。这些程序可能涉及到客户端-服务器架构和TCP/IP通信。 8. **多线程**:Java内置对多线程的支持,使得程序可以同时执行多个任务。在一些...
熟悉后再一个函数一个函数地深入学习exosip提供的接口函数,就可以深入理解osip 了,达到间接学习oSIP的目的,同时也能从eXoSIP中学习到正确使用oSIP的良好的编程风格和语法格式。 而要成功编译...
Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,它让开发者能够在服务器端使用 JavaScript 进行编程。这个"Node.js-Exercises"项目提供了多种针对Node.js的练习和小型项目,旨在帮助学习者提升在Node.js...