`

java tcp socket实例

阅读更多
网络编程的基本模型就是客户端到服务器端模型,一段必须提供一个固定位置,而另一端只需要知道这个固定的位置,并去建立两者之间的联系

Socket有两种主要操作方式:面向连接和无连接的。面向连接就像一部电话,必须先建立一个连接和一个呼叫,所有的事情到达的顺序和他们出发顺序相同,这就是tcp协议的实现场景
无连接的socket像一个邮件投递,没有什么保证,多个邮件可能在到达时的顺序域出发时的顺序不一样。无连接使用数据报协议,一个数据报包含了所有这次投递的信息,把它想象成信封,有目的地址和要发送的内容,这个模式下的socket不需要连接一个目的地,只是简单的投出数据报,这就是UDP协议的实现场景


下面是一个tcp socket实例程序

客户端:
package socket;

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;

public class MyClient {

	public static void main(String[] args) {
        MyClient c = new MyClient();
        try {
			c.callServer();
		} catch (UnknownHostException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
        
	}
	private void callServer() throws UnknownHostException, IOException {

		int reqInt = 23;
		Socket s = new Socket("localhost",8888);  //客户端给出IP和端口号
		
		InputStream is = s.getInputStream();
		OutputStream os = s.getOutputStream();
		DataInputStream dis = new DataInputStream(is);
		DataOutputStream dos = new DataOutputStream(os);
		
		dos.writeInt(reqInt);
		dos.flush();
		int serverInt = dis.readInt();
		System.out.println("server answer "+reqInt+"*18 = "+serverInt);
		dis.close();
		dos.close();
		
	}

}

服务器端;
package socket;

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class MyServer {

	public MyServer(){
		
	}
	public static void main(String[] args){
		MyServer ms = new MyServer();
			try {
				ms.listen(8888);
			} catch (IOException e) {
				e.printStackTrace();
			}
	}
	private void listen(int port) throws IOException {

		ServerSocket server = new ServerSocket(port);
		Socket socket = server.accept();
		InputStream is = socket.getInputStream();
		OutputStream os = socket.getOutputStream();
		DataInputStream dis = new DataInputStream(is);
		DataOutputStream dos = new DataOutputStream(os);
		int receiveInt = dis.readInt(); //读取客户端请求
		System.out.println("The message from client is:"+receiveInt);
		dos.writeInt(receiveInt*18); //返回client端
		dos.flush();   //强制清空缓冲区
		dos.close();
		dis.close();
		is.close();
		os.close();
		
		
	}
}

命令行中执行结果如下:
先启动服务器端没有任何反应


再启动客户端,向服务器端发送请求,并在客户端显示服务器端的响应


服务器端接收请求后


注意:一次请求完成后就结束自己的生命周期,服务器只能处理一次客户端请求,请求结束,连接即释放,看下一篇tcp socket实例(改进)
  • 大小: 8.3 KB
  • 大小: 12.9 KB
  • 大小: 8.9 KB
分享到:
评论

相关推荐

    Java TCP IP Socket编程(原书第2版)

    一旦接收到客户端的连接请求,服务器就会创建一个新的Socket实例与该客户端通信。 #### 2.3 数据传输 在Java中,通过Socket进行数据传输主要依靠输入流和输出流。客户端和服务器端都可以使用`InputStream`和`...

    javaTCP Socket.zip

    在这个"javaTCP Socket.zip"项目中,我们可以看到开发者利用Java的Socket API构建了一个服务器(FinalServer)和一个客户端(FinalClient),以实现数据的双向通信。 首先,让我们深入理解TCP(传输控制协议)和...

    tcp.rar_java Tcp _java tcp socket

    Java的`java.net.Socket`类和`java.net.ServerSocket`类是进行TCP通信的核心。`ServerSocket`用于服务器端,监听特定端口上的连接请求;而`Socket`则用于客户端,用来建立与服务器的连接。 1. **创建服务器端:** ...

    Java Socket-03 Java TCP Socket

    2. 客户端创建Socket实例,指定服务器的IP地址和端口号,通过`connect()`方法发起连接请求。 3. 一旦连接建立,服务器端`accept()`方法返回一个新的Socket对象,客户端和服务器端就可以通过Socket的输入输出流进行...

    JAVA实现基于Tcp协议的简单Socket通信实例

    之后,双方通过这个Socket实例的输入输出流进行数据交换,最后关闭相关资源。 ### 2. 相关API #### 2.1 `ServerSocket` 类 - `ServerSocket(int port, int backlog)`:创建一个服务器套接字,并将其绑定到指定的...

    Socket-TCP-Echo.rar_java tcp socket_tcp server java

    3. **TCP Server**: 在“Socket-TCP-Echo”项目中,服务器端的实现(通常名为Server.java)会创建一个ServerSocket实例,监听指定的端口号。当客户端连接时,它接受连接并创建一个新的Socket对象,通过该Socket与...

    java,socket实例

    Java Socket 实例与 JDBC 实例详解 在 Java 编程领域,Socket 和 JDBC 是两个非常重要的概念,尤其对于初学者和中级开发者来说,理解和掌握它们是提升技能的关键步骤。Socket 提供了网络通信的基础,而 JDBC 则是 ...

    Java_TCP_IP_Socket编程(原书第2版)

    3. **建立连接**:客户端使用Socket类的connect()方法向服务器发起连接请求,服务器端通过ServerSocket的accept()方法接收连接请求,形成一个Socket实例,表示客户端和服务器之间的连接已经建立。 4. **数据交换**...

    java TCP/IP socket 编程(原书第2版)pdf+源码

    一旦有连接请求,ServerSocket会返回一个新的Socket实例,代表与客户端建立的连接。Socket类则用于创建客户端的通信套接字,它可以主动连接到服务器。 在"Chapter2"中,可能会详细讲解如何创建并使用ServerSocket和...

    Java+TCP/IP+Socket编程++原书第2版.pdf

    - 创建Socket实例,指定服务器的IP地址和端口号,这会尝试建立到服务器的连接。 - 获取Socket的输入流和输出流,通常也是InputStreamReader、BufferedReader和PrintWriter。 - 通过输出流向服务器发送数据,通过...

    Java Socket实例(服务器多线程)

    Java Socket 实例是Java网络编程中的重要组成部分,用于实现客户端与服务器之间的通信。在这个实例中,我们关注的是服务器端的多线程应用,这在处理多个并发连接时尤其有用。多线程允许服务器同时处理多个客户端请求...

    java Tcp测试实例 JCreator 工程

    本Java TCP测试实例是针对那些希望理解和实现TCP通信的开发者设计的,特别是对于使用JCreator IDE的用户,这是一个很好的学习资源。 首先,让我们深入了解一下TCP的基本概念。TCP是一种面向连接的协议,意味着在两...

    Java socket编程实例.pdf

    ### Java Socket 编程实例详解 #### 一、引言 在现代软件开发中,网络编程占据了极其重要的地位。无论是互联网应用还是企业级系统,都需要处理不同设备间的通信。Java作为一种广泛使用的编程语言,提供了强大的...

    JavaTCP-Socket.zip_JAVA socket编程_java socket _socket 聊天

    - 参考`JavaTCP Socket.txt`文件,可能包含了一个简单的聊天应用示例代码,包括服务器端的监听、客户端的连接以及数据传输的实现。 总结,Java Socket编程为开发者提供了构建网络通信应用的基础工具,通过TCP套接...

    java socket编程实例(出自《java大学教程》)

    学习这些Java Socket编程实例,有助于理解TCP/IP通信的基本原理,为构建实际的网络应用程序打下坚实的基础。你可以通过调试和修改`SocketTest`代码,进一步探索和实践Socket编程的不同场景,如文件传输、聊天应用等...

    JAVA_Socket_TCP(客户端服务器)

    // 创建Socket实例,指定服务器的IP地址和端口号 Socket socket = new Socket("localhost", 8080); // 获取Socket的输入/输出流,用于数据交换 OutputStream outputStream = socket.getOutputStream(); ...

    tcp_udp_socket.zip_Java TCP/UDP_java Tcp _java socket _java tcp

    "Server.java"文件很可能包含了TCP服务器端的代码,它会创建一个`ServerSocket`实例,指定一个端口号,并通过`accept()`方法等待客户端的连接。当有客户端连接时,服务器端可以创建一个新的`Socket`对象来处理该连接...

    java应用socket实例

    总结来说,Java应用中的Socket实例展示了如何利用TCP/IP通信基础和SOAP协议来实现发送短信和接收应答的功能。在实际开发中,这样的技术广泛应用于分布式系统、Web服务和移动通信等领域,为跨平台的数据交换提供了...

    Java Socket使用实例

    在Java中,Socket类位于`java.net`包下,提供了创建和管理TCP连接的方法。 1. **服务器端**:服务器端通常监听特定的IP地址和端口号,等待客户端的连接请求。在Java中,我们使用`ServerSocket`类来创建服务器端。...

    Java TCPIP Socket编程 源码

    一个Socket实例代表了TCP连接的一个客户端,而一个ServerSocket实例代表了TCP连接的一个服务器端,一般在TCP Socket编程中,客户端有多个,而服务器端只有一个,客户端TCP向服务器端TCP发送连接请求,服务器端的...

Global site tag (gtag.js) - Google Analytics