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 源码:
分享到:
相关推荐
iOS客户端和服务器,基于AsyncSocket, 相互通信、即时通讯
基于vc socket tcp 协议 简单 聊天 通讯程序 可实现服务器与客户端相互通信,可连续发送消息,发送后即时收到。
用socket套接字实现简易服务器的建立与数据的传输 内含:mysocket.h -- socket功能的简化与重定义,更加方便; server.cpp -- 服务端源代码 client.cpp -- 客户端源代码 使用方式:编译后使用两台不同设备,分别...
简单的基于Unity的客户端连接服务器端,相互发送一次数据,文档描述位于http://blog.sina.com.cn/s/blog_1322690230102y3l4.html
Windows Sockets 规范以 U.C. Berkeley 大学 BSD UNIX 中流行的 ...应用程序调用 Windows Sockets 的 API 实现相互之间的通讯。Windows Sockets 又利用 下层的网络通讯协议功能和操作系统调用实现实际的通讯工作。
用c语言实现简单的socket网络编程TCP/IP客户服务器的连接,并实现两者直接的相互通信
本人写的 server.c和 client.c 供大家下载学习 如有问题,或相互学习 加Q 335025033
事实上网络编程简单的理解就是两台计算机相互通讯数据而已,对于程序员而言,去掌握一种编程接口并使用一种编程模型相对就会显得简单的多了,Java SDK提供一些相对简单的Api来完成这些工作。Socket就是其中之一,...
Socket 之长短连接 ...在设计模式中,Socket 其实就是一个门面模式,它把复杂的 TCP/IP 协议族隐藏在 Socket 接口后面,对用户来说,一组简单的接口就是全部,让 Socket 去组织数据,以符合指定的协议。
WCF 整合了原有的windows通讯的 .net Remoting,WebService,Socket的机制,并融合有HTTP和FTP的相关技术。是Windows平台上开发分布式应用最佳的实践方式。简单的归结为四大部分1>.网络服务的协议,即用什么网络协议...
RPC 会隐藏底层的通讯细节(不需要直接处理 Socket 通讯或 Http 通讯) RPC 是一个请求响应模型。客户端发起请求,服务器返回响应(类似于 Http 的工作方式) RPC 在使用形式上像调用本地函数(或方法)一样去调用...
一般来说,聊天工具大多数由客户端程序和服务器程序,外加服务器端用于存放客户数据的数据库组成,本系统采用客户机/服务器架构模式,通过Java提供的Socket类来连接客户机和服务器并使客户机和服务器之间相互通信。
应用程序调用Windows Sockets的API实现相互之间的通讯。Windows Sockets又利用下层的网络通讯协议功能和操作系统调用实现实际的通讯工作。它们之间的关系如图 通信的基础是套接口(Socket),一个套接口是通讯的...
一般来说,聊天工具大多数由客户端程序和服务器程序,外加服务器端用于存放客户数据的数据库组成,本系统采用客户机/服务器架构模式,通过Java提供的Socket类来连接客户机和服务器并使客户机和服务器之间相互通信,...
一般来说,聊天工具大多数由客户端程序和服务器程序,外加服务器端用于存放客户数据的数据库组成,本系统采用客户机/服务器架构模式,通过Java提供的Socket类来连接客户机和服务器并使客户机和服务器之间相互通信,...
网络编程简单的理解就是两台计算机相互通讯数据而已,对于程序员而言,去掌握一种编程接口并使用一种编程模型相对就会显得简单的多,Java SDK提供一些相对简单的Api来完成这些工作。Socket就是其中之一,对于Java而...
一般来说,聊天工具大多数由客户端程序和服务器程序,外加服务器端用于存放客户数据的数据库组成,本系统采用客户机/服务器架构模式,通过Java提供的Socket类来连接客户机和服务器并使客户机和服务器之间相互通信,...
一般来说,聊天工具大多数由客户端程序和服务器程序,外加服务器端用于存放客户数据的数据库组成,本系统采用客户机/服务器架构模式,通过Java提供的Socket类来连接客户机和服务器并使客户机和服务器之间相互通信,...
一般来说,聊天工具大多数由客户端程序和服务器程序,外加服务器端用于存放客户数据的数据库组成,本系统采用客户机/服务器架构模式,通过Java提供的Socket类来连接客户机和服务器并使客户机和服务器之间相互通信,...