TCPEchoServer
package com.mz.xx.code.atest;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.SocketAddress;
public class TCPEchoServer {
private static final int BUFSIZE = 32;
public static void main(String[] args) throws IOException{
int servPort = 7788;
ServerSocket servSock = new ServerSocket(servPort);
int recvMsgSize;
byte[] receiveBuf = new byte[BUFSIZE];
while(true){
Socket clntSock = servSock.accept();
SocketAddress clientAddress = clntSock.getRemoteSocketAddress();
System.out.println("Handling client at" + clientAddress);
InputStream in = clntSock.getInputStream();
OutputStream out = clntSock.getOutputStream();
while((recvMsgSize = in.read(receiveBuf))!=-1){
System.out.println("IN...");
out.write(receiveBuf,0,recvMsgSize);
out.flush();
System.out.println("Sended:"+new String(receiveBuf)+"\t"+recvMsgSize);
}
clntSock.close();
}
}
}
TCPEchoClient
package com.mz.xx.code.atest;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.net.SocketException;
import java.net.UnknownHostException;
public class TCPEchoClient {
public static void main(String[] args) throws UnknownHostException,
IOException {
String server = "localhost";
byte[] data = "abcdefghijklmnopqrstuvwxyz_ABCDEFGHIJKLMNOPQRSTUVWXYZ ".getBytes();
int servPort = 7788;
Socket socket = new Socket(server, servPort);
System.out.println("Connected to server...sending echo string");
InputStream in = socket.getInputStream();
OutputStream out = socket.getOutputStream();
out.write(data);
int totalBytesRcvd = 0;
int bytesRcvd;
byte[] dataArray = new byte[data.length];
/**
* 以前学习socket,对于消息的读取也就用一个read().最近在学一本socke编程的书籍,书中这样写到:
* TCP协议并不能确定在read() 和 write() 方法中所发送信息的界限,也就是说,虽然我们只用勒一个
* write()方法来发送回馈字符串,回馈服务器也可以从多个块中接受该信息。即使回馈字符串在服务器
* 上存在于一个块中,在返回的时候,也可能被TCP协议分割成多个部分。对于初学者来说,最常见的错误
* 就是认为由一个write()方法发送的数据总是会由一个read()方法来接受。
*
*/
while (totalBytesRcvd < dataArray.length) {
if ((bytesRcvd = in.read(dataArray, totalBytesRcvd, data.length
- totalBytesRcvd)) == -1)
throw new SocketException("Connection closed prematurely");
totalBytesRcvd += bytesRcvd;
}//data array is full
System.out.println("Received: " + new String(dataArray)+"\t"+dataArray.length);
socket.close();
}
}
Java TCP/IP Socket 源码:
分享到:
相关推荐
Socket编程是计算机网络编程中的重要组成部分,特别是在局域网通讯中有着广泛的应用。它提供了进程间的网络通信能力,使得在同一台机器或者不同机器上的应用程序能够相互通信。本篇文章将详细探讨如何使用Socket来...
本项目利用Java的Socket编程技术,实现了一个简单的类QQ即时通讯程序,旨在提供基本的聊天功能。下面我们将深入探讨相关知识点。 首先,Java Socket编程是Java网络编程的基础,它提供了在网络之间两台计算机进行...
在这个“delphi socket通讯 demo”中,我们将深入探讨如何使用Delphi 7中的TServerSocket和TClientSocket组件进行套接字通信。 首先,让我们了解什么是套接字(Socket)。套接字是操作系统提供的一个接口,允许程序...
在Node.js中,创建一个简单的Socket服务器的步骤如下: 1. 引入`net`模块: ```javascript const net = require('net'); ``` 2. 创建一个服务器并监听指定端口: ```javascript const server = net.createServer();...
SOCKET,源自英文单词“插座”,在计算机网络编程中,它是进程间通信(IPC)的一种方式,允许不同计算机上的进程相互通信。SOCKET接口提供了一种标准的方式,让程序员能够编写跨平台的网络应用程序。它在TCP/IP协议...
用socket套接字实现简易服务器的建立与数据的传输 内含:mysocket.h -- socket功能的简化与重定义,更加方便; server.cpp -- 服务端源代码 client.cpp -- 客户端源代码 使用方式:编译后使用两台不同设备,分别...
Socket通讯是计算机网络编程中的重要概念,主要用于实现进程间的通信,尤其在分布式系统和互联网应用中扮演着核心角色。在Android开发中,Socket通信更是不可或缺的一部分,它允许设备之间进行数据传输,创建出...
简单的基于Unity的客户端连接服务器端,相互发送一次数据,文档描述位于http://blog.sina.com.cn/s/blog_1322690230102y3l4.html
在本场景中,“Socket通讯控制小车到达目标点”指的是使用Socket编程来远程控制一个机器人小车,使其能够根据指令到达指定的目标位置。ROS(Robot Operating System,机器人操作系统)是一个开源操作系统,用于为...
因此,服务器端通常会为每个新连接创建一个新的线程,这样每个客户端的通信都可以独立进行,不会相互干扰。 6. **编码与解码**:在发送和接收文本消息时,需要考虑字符编码问题。Java的`DataInputStream`和`...
本示例涉及的是如何使用Python的socket模块实现一个简单的聊天室功能,允许两个客户端通过一个服务器进行交互,实现彼此间的聊天。下面我们将详细探讨这个场景中的关键知识点。 1. **Python Socket模块**: Python...
每个用户连接都会创建一个新的线程或进程来处理其发送和接收的数据,这样就能保证多个用户同时进行交互而不会相互干扰。 4. **服务器端实现**:服务器端通常会监听一个特定的端口,等待客户端的连接请求。一旦有...
P2P网络是一种分布式网络架构,其中每个节点(或称为对等点)都可以同时作为客户端和服务端,相互之间直接交换数据。与传统的客户端-服务器模型不同,P2P网络中的每个参与者都拥有相同的功能和权限,能够分享资源、...
在TCP/IP协议族中,socket是进程间通信的一种方式,它允许不同主机间的进程相互通信。Linux下的socket主要分为两种类型:流式(SOCK_STREAM)和数据报(SOCK_DGRAM)。流式socket基于TCP协议,提供面向连接、可靠的...
在这个主题中,我们将深入探讨如何使用C语言实现基于TCP/IP协议的简单Socket网络编程,以及客户端和服务器之间的连接与通信。 首先,TCP(Transmission Control Protocol)是一种面向连接的、可靠的传输协议,而IP...
Socket通信是网络编程中的一种基本机制,它使得不同计算机之间的进程能够相互通信。本篇文章主要介绍如何使用Java语言实现基于TCP协议的Socket通信,并附带提及UDP协议的相关内容。文章分为以下几个部分: 1. **...
在这个基于控制台的聊天程序中,开发者利用Socket API实现了一个简单的消息通讯系统。这个系统无需图形用户界面,全部交互通过命令行(控制台)完成,降低了系统资源的消耗,同时也简化了程序的设计。 【描述】:这...
### Flex和Java的Socket通信详解 ...这种技术不仅可以应用于简单的客户端-服务端通信场景,还可以扩展到更复杂的应用场景,如即时通讯系统等。希望本文能够帮助您更好地理解和掌握Flex与Java的Socket通信技术。
在计算机网络通信领域,Socket接口作为一种基础的网络编程接口,广泛应用于各种网络应用程序,包括我们常见的即时通讯软件。本篇文章将深入探讨如何利用Socket通信技术,结合C++语言,实现一个简单的局域网聊天工具...
- **应用程序与Windows Sockets的关系**:应用程序通过调用Windows Sockets API来实现相互间的通信,而Windows Sockets则利用下层的网络通讯协议和服务来完成实际的数据传输工作。 2. **Berkeley套接口** - **模型...