`
i拾贝
  • 浏览: 30000 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

TCP Socket通讯模型

    博客分类:
  • java
阅读更多

TCP Socket通讯模型

 

TCP Socket通讯模型


应用举例:

TestServer.java

TestCilent.java

 

TestServer.java

/*	范例名称:简单的client/server程序
 * 	源文件名称:TestClient.java/TestServer.java
 *	要  点:
 *		1. Java Socket编程步骤
 *		2. Socket/ServerSocket类用法
 *		3. 通过Socket对象可以获取通信对方Socket的信息
 */
import java.net.*;
import java.io.*;

public class TestServer {
	public static void main(String args[]) {
		try {		
			ServerSocket s = new ServerSocket(8888);
			while (true) {
				Socket s1 = s.accept();
				OutputStream os = s1.getOutputStream();
				DataOutputStream dos = new DataOutputStream(os);
				//拿到客户端的地址和端口
				dos.writeUTF("Hello," + s1.getInetAddress() + 
						"port#" +s1.getPort() + "  bye-bye!");
				dos.close();
				s1.close();
			}
		}catch (IOException e) {
			e.printStackTrace();
			System.out.println("程序运行出错:" + e);			
		}
	}
}

 

F:\>cd java

F:\java>cd socket

F:\java\socket>javac TestServer.java

F:\java\socket>java TestServer


 

TestClient.java

/*	范例名称:简单的client/server程序
 * 	源文件名称:TestClient.java/TestServer.java
 *	要  点:
 *		1. Java Socket编程步骤
 *		2. Socket/ServerSocket类用法
 *		3. 通过Socket对象可以获取通信对方Socket的信息
 */

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

public class TestClient {
	public static void main(String args[]) {
		try {
			Socket s1 = new Socket("127.0.0.1", 8888);
			InputStream is = s1.getInputStream();
			DataInputStream dis = new DataInputStream(is);
			System.out.println(dis.readUTF());
			dis.close();
			s1.close();
		} catch (ConnectException connExc) {
			connExc.printStackTrace();
			System.err.println("服务器连接失败!");
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}

 

F:\>cd java

F:\java>cd socket

F:\java\socket>javac TestClient.java

F:\java\socket>java TestClient
Hello,/127.0.0.1port#50883  bye-bye!

F:\java\socket>java TestClient
Hello,/127.0.0.1port#50890  bye-bye!

F:\java\socket>java TestClient
Hello,/127.0.0.1port#50892  bye-bye!

F:\java\socket>java TestClient
Hello,/127.0.0.1port#50893  bye-bye!

F:\java\socket>

 

 测试

TestSockServer.java

TestSockClient.java

 

TestSockServer.java

import java.io.*; 
import java.net.*;
public class TestSockServer {
  public static void main(String[] args) {
    InputStream in = null; 
    OutputStream out = null;
    try {
      ServerSocket ss = new ServerSocket(5888);
	  while(true) {
		  Socket socket = ss.accept();
		  in = socket.getInputStream(); 
		  out = socket.getOutputStream();
		  DataOutputStream dos = new DataOutputStream(out);
		  DataInputStream dis = new DataInputStream(in);
		  String s = null;
		  if((s=dis.readUTF())!=null) {
			  System.out.println(s);
			  //打印client的地址和端口
			  System.out.println("from: "+socket.getInetAddress());
			  System.out.println("Port: "+socket.getPort());
			}
		  dos.writeUTF("hi,hello"); 
		  dis.close();
		  dos.close();
		  socket.close();
	  }
    } catch (IOException e) {e.printStackTrace();}
  }
}

 

TestSockClient.java

import java.net.*;
import java.io.*;
public class TestSockClient {
  public static void main(String[] args) {
    InputStream is = null; OutputStream os = null;
    try {
      Socket socket = new Socket("localhost",5888);
      is = socket.getInputStream();
      os = socket.getOutputStream();
      DataInputStream dis = new DataInputStream(is);
      DataOutputStream dos = new DataOutputStream(os);
	  //写
      dos.writeUTF("hey"); 
      String s = null;
      if((s=dis.readUTF())!=null);
      	System.out.println(s); 
      dos.close();
      dis.close();
      socket.close();
    } catch (UnknownHostException e) {
       e.printStackTrace();
    } catch (IOException e) {e.printStackTrace();}
  }
}

 

F:\java\socket>javac TestSockServer.java

F:\java\socket>java TestSockServer
hey
from: /127.0.0.1
Port: 51812
hey
from: /127.0.0.1
Port: 51814
hey
from: /127.0.0.1
Port: 51815
hey
from: /127.0.0.1
Port: 51817

 

F:\java\socket>javac TestSockClient.java

F:\java\socket>java TestSockClient
hi,hello

F:\java\socket>java TestSockClient
hi,hello

F:\java\socket>java TestSockClient
hi,hello

F:\java\socket>java TestSockClient
hi,hello

F:\java\socket>

 

 

  • 大小: 67.4 KB
分享到:
评论

相关推荐

    TcpSocket通讯和Socket客户端

    总结来说,`TcpSocket`和`Socket`在C#中提供了强大的TCP通信能力,结合异步编程模型,可以构建高效、可扩展的网络服务。通过以太网,这些网络通信可以跨越局域网甚至广域网,实现远程数据交换。在实际项目中,理解和...

    C#异步TCP Socket通讯代码

    标题中的“C#异步TCP Socket通讯代码”是指利用C#的异步编程模型来实现TCP通信。异步编程在处理网络通信时尤为重要,因为它允许应用程序在等待I/O操作完成时继续执行其他任务,避免了线程阻塞,提高了程序的响应性和...

    tcp socket

    TCP Socket客户端通讯插件是为了简化客户端与服务器之间的交互过程而设计的。它通常包含了几个关键的接口,这些接口允许开发者执行以下操作: 1. **建立连接**:客户端首先通过调用`connect()`函数与服务器建立连接...

    C#的TCP异步SOCKET通讯类

    以下是对"TCP异步SOCKET通讯类"的详细解释: 1. **TCP基础**:TCP是一种面向连接的、可靠的传输协议,它保证了数据包在传输过程中的顺序和完整性。通过三次握手建立连接,四次挥手断开连接。 2. **Socket类**:在...

    TCP与串口间的通信方式。Socket通信

    2. 异步Socket通信:异步Socket采用事件驱动模型,允许客户端和服务端同时处理多个请求,提高系统并发性。在.NET中,可以通过I/O completion ports (IOCP) 或异步方法(如BeginSend、BeginReceive)来实现。 对于...

    在C#中使用异步Socket编程实现TCP网络服务的CS的通讯构架

    总结来说,使用C#的异步Socket编程实现TCP网络服务的C/S通讯构架,需要设计和实现一系列辅助类,通过事件驱动模型增强网络通信的灵活性和可靠性。通过这样的方式,可以构建出稳定且可扩展的网络应用程序。同时,良好...

    VC TCP/UDPsocket通讯协议

    **TCP/UDP Socket通讯协议详解** 在计算机网络编程中,TCP(Transmission Control Protocol)和UDP(User Datagram Protocol)是两种最常用的传输层协议,它们在客户端/服务器(C/S)模式下发挥着至关重要的作用。...

    【Socket编程】--TCP异步通讯一服务器多客户端

    本篇将深入探讨"【Socket编程】--TCP异步通讯一服务器多客户端"这一主题。 TCP(Transmission Control Protocol)是一种面向连接的、可靠的传输协议,它确保了数据的顺序传输和错误检查。在TCP异步通讯中,服务器并...

    Socket通讯调式工具(TCP&UDP;)

    Socket通讯调试工具是一种重要的开发和测试工具,尤其在进行网络编程时,无论是TCP还是UDP协议,都有着不可或缺的作用。本文将详细介绍此类工具的功能、用途以及如何使用它们来优化和调试网络应用。 首先,Socket是...

    SuperSocket Socket C# 通讯详细介绍

    **SuperSocket Socket C# 通讯详解** 在C#编程领域,网络通信是一个不可或缺的部分,而SuperSocket则是一个强大且易用的.NET Socket服务器框架。它为开发者提供了构建自定义网络应用服务的基础,使得处理TCP连接变...

    Socket TCP 调试助手 Modbus调试

    在TCP/IP模型中,Socket工作在传输层,提供了进程间的网络通信。Socket分为两种类型:流式Socket(SOCK_STREAM,基于TCP)和数据报Socket(SOCK_DGRAM,基于UDP)。在这个场景下,我们主要关注流式Socket,因为TCP是...

    SuperSocket-master_Socket基于TCP、UDP

    - SuperSocket为TCP应用提供了一套完整的事件驱动模型,如连接建立、数据接收、断开连接等,开发者只需关注这些事件的处理即可。 - 它提供了简单易用的API,如`Server.Start()`启动服务器,`Session.Send()`发送...

    WfServer_socket通讯_

    "WfServer_socket通讯_"这个主题显然关注的是如何通过Socket实现服务器与客户端之间的数据交换。Socket编程通常涉及TCP/IP协议栈,允许应用程序通过网络发送和接收数据。 1. **Socket基本概念**: Socket,也称为...

    VS2017实现Tcp socket通信(C++)

    SOCKET listenSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); struct sockaddr_in serverAddress; memset(&serverAddress, 0, sizeof(serverAddress)); serverAddress.sin_family = AF_INET; serverAddress....

    TCPSocket.zip

    在"TCPSocket.zip"这个压缩包中,包含了两个示例程序,分别对应了两种不同的通信模式:一次性的通信和像QQ那样持续的聊天交流。 1. **一次性的通信**: 这种通信模型适用于发送一次性数据,如登录验证、数据同步等...

    Socket通讯包

    Socket通讯包是一个重要的编程工具,主要用于在客户端和服务器之间建立网络通信。Socket是TCP/IP协议族的一部分,提供了进程间通信(IPC)的能力,允许不同计算机上的应用程序通过网络进行数据交换。在本文中,我们...

    Socket通讯简单Demo

    总的来说,这个"Socket通讯简单Demo"提供了一个基础的网络通信模型,让初学者可以通过实际操作理解Socket编程的基本流程和方法。通过阅读和运行这个Demo,你可以了解如何建立Socket连接、发送和接收数据,以及如何将...

    tcp多线程socket通讯

    自己闲暇时候写的socket多线程通讯模型,代码虽然比较简单,但是比较容易扩展,麻雀虽小,五脏俱全。

    C# SOCKET 通讯例子

    在实际应用中,通常会使用异步编程模型来提高性能,例如使用`Socket.BeginConnect()`, `Socket.BeginReceive()`, 和 `Socket.BeginSend()`等异步方法。此外,错误处理和异常处理也是必不可少的部分,以确保程序的...

    android实现socket通讯

    总结,Android实现Socket通讯涉及创建和管理Socket对象,以及正确处理网络数据的读写。通过上述步骤,开发者可以构建基本的客户端-服务器通信模型,进一步扩展功能,如数据序列化、心跳机制、断线重连等,以满足各种...

Global site tag (gtag.js) - Google Analytics