1.服务端
while(true){
Socket socket = null;
socket = serverSocket.accept();
InputStream iStream = socket.getInputStream();
byte[] buff = new byte[1024];
int len = -1;
StringBuffer pp = new StringBuffer();
while((len = iStream.read(buff))!=-1){ //read 方法返回的是读到的字符数
pp.append(new String(buff,0,len)); //所以这里采用这种方式来做
}
System.out.println(pp.toString());
OutputStream oStream = socket.getOutputStream();
oStream.write("back".getBytes());
socket.shutdownOutput();
System.out.println(socket.isClosed());
socket.close();
}
要点:
1.两端通信的时候最好是采用同样的方式。
2.一端给另一端发信息的时候,最好采用 socket.shutdownOutput();这样另一端才会接受到,或者采用socket.close();
不过在服务器端,最好是采用socket.shutdownOutput(),因为这样不会关闭socket,socket的关闭给客户端来做,减少通信的开销。
如果一定要关闭服务端的socket,那么就放在finlly{}块中。
2.客户端
Socket socket = new Socket("127.0.0.1",9001);
OutputStream oStream = socket.getOutputStream();
oStream.write("abc".getBytes());
// oStream.close();
socket.shutdownOutput(); //最好是采用这种做法
System.out.println(socket.isClosed());
// oStream.flush();
// socket.shutdownOutput();
InputStream iStream = socket.getInputStream();
byte[] buff = new byte[1024];
int len = -1;
StringBuffer pp = new StringBuffer();
while((len = iStream.read(buff))!=-1){
pp.append(new String(buff,0,len)); //最好是采用这种方式
}
System.out.println(pp.toString());
socket.close();
一 注意的一点:在使用 PrintWriter && BufferedReader 的时候最好设置
PrintWriter pWriter = new PrintWriter(oStream,true); 设置为true 直接发送,不必等到缓冲区满
二 如果关闭了 OutputStream oStream = socket.getOutputStream();
oStream 也相当于关闭了socket.
使用 BufferedReader && PrintWriter
1.BufferedReader 通过
String msg = null;
while((msg=br.readLine())!=null){ //通过readLine来读取
System.out.println(msg);
pw.println(msg+"1111"); //通过pringln推送到另一端,而不是write()方法是写入到一个字符串中,不是发送到另一端
socket.shutdownOutput();
}
分享到:
相关推荐
关于socket基本通信的学习 里面有使用的方法 欢迎一起学习!
这个Java Socket 聊天通信演示代码将涵盖上述基本概念,帮助初学者理解如何使用Java实现网络通信。实际的代码会包含更多的细节,如错误处理、多线程管理和用户界面交互等。通过学习和实践这个示例,你可以进一步提升...
Socket 通信基本流程图 在计算机网络通信中,Socket 是一...Socket 通信基本流程图是 Socket 通信机制的核心组成部分,了解 Socket 通信基本流程图对于深入理解 Socket 通信机制和解决 Socket 通信问题具有重要意义。
首先,我们来了解Socket的基本概念。Socket是操作系统提供的网络编程接口,它允许应用程序通过网络发送和接收数据。在C#中,`System.Net.Sockets`命名空间提供了Socket类,用于创建和管理Socket对象。 在C#中实现...
在Windows环境下进行网络编程时,Socket通信是一种常用的技术。Socket接口是操作系统提供的网络通信API...通过实践上述代码,初学者可以掌握Windows下Socket通信的基本原理和操作,为进一步深入网络编程打下坚实基础。
Socket基本概念 - **Socket接口**: 是操作系统提供的编程接口,用于在网络中建立和维护连接,进行数据传输。它将复杂的网络协议细节封装起来,使得程序员可以专注于应用程序的逻辑。 - **套接字(Socket)**: 是...
Socket通信的基本步骤包括:创建ServerSocket,等待客户端连接,创建Socket对象,通过输入/输出流进行数据交换,最后关闭连接。 在Mina与Socket通信的实现中,服务端通常使用Mina来创建一个Acceptor,监听特定端口...
Java中的Socket通信是一种基于TCP/IP协议的网络编程方式,它允许两台计算机通过网络进行双向通信。在本项目中,“基于socket通信的javaDH通信实现”是利用Java语言实现的一种安全通信机制,其中融入了Diffie-Hellman...
1. **Socket基本概念**: - **Socket接口**:Socket是进程间通信的一种方式,它提供了进程间网络通信的能力。在操作系统中,每个Socket都由一个唯一的整数(Socket标识符或Socket号)来标识。 - **Socket地址**:...
本文将围绕标题和描述展开,详细阐述Socket同步通信的基本原理、步骤以及相关知识点。 首先,我们需要理解什么是Socket。Socket在计算机网络中扮演着桥梁的角色,它提供了进程间通信(IPC,Inter-Process ...
Socket通信在IT行业中是网络编程的基础,特别是在C#这样的多平台开发环境中,Socket通信库的使用至关重要。...通过理解Socket通信的基本原理和C#中的相关类库,开发者可以构建出高效、稳定的服务端和客户端应用程序。
9. **文件名称列表"Socket基本通信"**: 这可能是一个包含示例代码或教程的文件,其中可能涵盖了以上步骤的详细实现,包括如何创建和管理Socket,如何处理数据的发送和接收,以及如何在MFC环境中整合Socket通信。 ...
在实际操作中,你需要先理解Socket的基本原理,然后阅读和分析提供的Client和Server源代码,理解它们如何建立连接、交换数据以及关闭连接。通过这个实验,你将深入理解网络通信的基础,并掌握Socket编程技术。
首先,要理解Socket通信的基本概念。Socket可以视为通信的两端,一个作为服务器端(Server Socket),等待客户端的连接请求;另一个作为客户端端(Client Socket),主动发起连接请求。一旦连接建立,双方就可以通过...
首先,我们需要理解Socket的基本概念。Socket是网络通信的一种接口,它提供了进程间通信(IPC)的能力,让两个设备能够通过Internet协议(IP)地址和端口号建立连接。在Android中,我们可以使用Java的内置Socket类来...
在本文中,我们将深入探讨"简单的socket通信",包括服务端和客户端的基本概念、实现方式以及如何在Visual Studio 2015环境下进行开发。 首先,我们需要了解什么是Socket。Socket在计算机网络中是一个接口,它为应用...
一、Socket基本概念 Socket,通常称为套接字,是网络编程中的一个抽象概念,用于在网络上的两个进程间建立通信连接。在TCP/IP协议栈中,Socket接口提供了多种协议(如TCP、UDP)的编程方法。TCP Socket提供面向连接...
以上就是Socket通信的基本流程和原理,实际应用中,可能还需要处理异常、超时、多线程/多进程等问题,以提高程序的健壮性和并发能力。通过学习和实践Socket通信,你将能够构建起网络应用的基础,例如聊天程序、文件...
1. **Socket基本概念**: Socket,也称为“套接字”,是网络通信中的一个抽象概念,它代表了两台机器之间的一个连接端点。在TCP/IP模型中,Socket接口提供了应用层与传输层之间的交互,允许应用程序发送和接收数据...
Socket是网络编程的基本接口,它允许应用程序通过网络发送和接收数据。在C#中,我们可以使用System.Net.Sockets命名空间中的Socket类来创建和操作Socket。Socket可以被用来建立TCP或UDP连接,此处我们讨论的是基于...