服务器端

 

package com.Pong.tcpip;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class TcpServer { //先启动服务器端程序
public static void main(String[] args) throws IOException {
ServerSocket serverSocket=new ServerSocket(8080);
Socket socket=serverSocket.accept();//阻塞等待消息
InputStream inputStream=socket.getInputStream();
OutputStream outputStream=socket.getOutputStream();
// outputStream.write("欢迎光临!".getBytes(), 0,"欢迎光临!".getBytes().length );
outputStream.write("welcome!".getBytes() );
/* byte[] buf=new byte[1024];
int len=inputStream.read(buf);
// System.out.println(new String(buf, 0, len));
inputStream.close();*/
BufferedReader bufferedReader=new BufferedReader(new InputStreamReader(inputStream));
System.out.println(bufferedReader.readLine());
bufferedReader.close();
outputStream.close();
socket.close();
serverSocket.close();
}
}
package com.Pong.tcpip;

import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket; public class Servicer implements Runnable {
Socket socket; public Servicer(Socket socket) {
super();
this.socket = socket;
} @Override
public void run() {
try {
InputStream inputStream=socket.getInputStream();
OutputStream outputStream=socket.getOutputStream(); BufferedReader bufferedReader=new BufferedReader(new InputStreamReader(inputStream));
DataOutputStream dataOutputStream=new DataOutputStream(outputStream);
while (true) {
String strWord=bufferedReader.readLine();
// System.out.println(strWord+":"+strWord.length());
if ("quit".equalsIgnoreCase(strWord)) {
break;
}
String strEcho=(new StringBuilder(strWord).reverse()).toString();
//dataOutputStream.writeBytes(strWord+"---->"+strEcho+"\r\n");
//System.getProperty("line.separator")为跨平台换行符。Window为\r\n,unix为\n
dataOutputStream.writeBytes(strWord+"---->"+strEcho+System.getProperty("line.separator"));
}
bufferedReader.close();
bufferedReader.close();
socket.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} } public static void main(String [] args)
{
try
{
ServerSocket ss=new ServerSocket(8080);
while(true)
{
Socket s=ss.accept();
new Thread(new Servicer(s)).start();
}
//ss.close();
}catch(Exception e){e.printStackTrace();}
} }

客户端

package com.Pong.tcpip;
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.Socket;
//后启动客户端程序
public class TcpClient {
//启动main时传进来两个参数:ip和端口号
public static void main(String [] args)
{
try
{
//Socket s=new Socket(InetAddress.getByName("192.168.0.213"),8001);
if(args.length < 2)
{
System.out.println("Usage:java TcpClient ServerIP ServerPort");
return;
}
//建立Socket
Socket s=new Socket(InetAddress.getByName(args[0]),Integer.parseInt(args[1]));
InputStream ips=s.getInputStream();
OutputStream ops=s.getOutputStream(); BufferedReader brKey = new BufferedReader(new InputStreamReader(System.in));//键盘输入
DataOutputStream dos = new DataOutputStream(ops);
BufferedReader brNet = new BufferedReader(new InputStreamReader(ips)); while(true)
{
String strWord = brKey.readLine();
dos.writeBytes(strWord + System.getProperty("line.separator"));
if(strWord.equalsIgnoreCase("quit"))
break;
else
System.out.println(brNet.readLine());
}
dos.close();
brNet.close();
brKey.close();
s.close();
}catch(Exception e){e.printStackTrace();}
}
}
/*发送和接受都是以Socket为信息载体*/

JAVA TCP Socket的更多相关文章

  1. java tcp socket实例

    java tcp socket实例 2011-04-20 13:58 2364人阅读 评论(1) 收藏 举报 socketjavatcpthreadserverclass package com.ne ...

  2. Java中使用Socket连接判断Inputstream结束,java tcp socket服务端,python tcp socket客户端

    最近在试着用java写一个socket的服务器,用python写一个socket的客户端来完成二者之间的通信,但是发现存在一个问题,服务器方面就卡在读取inputsream的地方不动了,导致后面的代码 ...

  3. 【Java TCP/IP Socket】TCP Socket通信中由read返回值造成的的死锁问题(含代码)(转)

    书上示例 在第一章<基本套接字>中,作者给出了一个TCP Socket通信的例子——反馈服务器,即服务器端直接把从客户端接收到的数据原原本本地反馈回去. 书上客户端代码如下: 1 2 3 ...

  4. JAVA 通过 Socket 实现 TCP 编程

    简介 TCP简介 TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的.可靠的.基于字节流的传输层通信协议,由IETF的RFC 793定义.在简化的计算机 ...

  5. Java学习---TCP Socket的学习

    基础知识 1. TCP协议 TCP是一种面向连接的.可靠的.基于字节流的运输层(Transport layer)通信协议.在简化的计算机网络OSI模型中,它完成第四层传输层所指定的功能,UDP是同一层 ...

  6. 【Java TCP/IP Socket】深入剖析socket——TCP通信中由于底层队列填满而造成的死锁问题(含代码)

    基础准备 首先需要明白数据传输的底层实现机制,在http://blog.csdn.net/ns_code/article/details/15813809这篇博客中有详细的介绍,在上面的博客中,我们提 ...

  7. 【Java TCP/IP Socket】基于线程池的TCP服务器(含代码)

    了解线程池 在http://blog.csdn.net/ns_code/article/details/14105457(读书笔记一:TCP Socket)这篇博文中,服务器端采用的实现方式是:一个客 ...

  8. 【Java TCP/IP Socket】TCP Socket(含代码)

    TCP的Java支持 协议相当于相互通信的程序间达成的一种约定,它规定了分组报文的结构.交换方式.包含的意义以及怎样对报文所包含的信息进行解析,TCP/IP协议族有IP协议.TCP协议和UDP协议.现 ...

  9. 一个项目看java TCP/IP Socket编程

    前一段时间刚做了个java程序和网络上多台机器的c程序通讯的项目,遵循的是TCP/IP协议,用到了java的Socket编程.网络通讯是java的强项,用TCP/IP协议可以方便的和网络上的其他程序互 ...

随机推荐

  1. Vue实例:vue2.0+ElementUI框架开发pc项目

    开发前准备 vue.js2.0中文,项目所使用的js框架 vue-router,vue.js配套路由 vuex,状态管理 Element,UI框架 1,根据官方指引,构建项目框架 安装vue npm ...

  2. ZeroMQ 三种模式python3实现

    ZeroMQ是一个消息队列网络库,实现网络常用技术封装.在C/S中实现了三种模式,这段时间用python简单实现了一下,感觉python虽然灵活.但是数据处理不如C++自由灵活. Request-Re ...

  3. UltraEdit中的特殊字符

    以下特殊字符,可以在替换中用到, ^n--换行 ^t--Tab

  4. 模块之-os模块

    模块之-os模块 >>> import os >>> os.getcwd() #获取当前工作目录 'C:\\Users\\Administrator' >&g ...

  5. Rust 基础学习

    所有权: 变量具有唯一所有权.如果一个类型拥有 Copy trait,一个旧的变量在将其赋值给其他变量后仍然可用.除此之外,赋值意味着转移所有权.Rust 不允许自身或其任何部分实现了 Drop tr ...

  6. c++ 指定目录下的文件遍历

    要实现指定目录下文件的遍历需要执行一下的部分: 第一步获取当前路径的名字:(MAX_PATH是在windows定义的所有的路径名字不超过其,调用该函数会使得得到当前的目录) #include < ...

  7. Qualcomm_Mobile_OpenCL.pdf 翻译-1

    1 前言 1.1 目的 这篇文档的主要目的是,向原始设备制造商(OEMs),独立软件供应商(ISVs),第三方开发者们,提供在基于高通骁龙400系列.600系列,和800系列的手机平台和芯片上进行开发 ...

  8. Linux centos :root密码忘记怎么办?

    1 重启系统后出现GRUB界面在引导装载程序菜单上,用上下方向键选择你忘记密码的那个系统键入“e” 来进入编辑模式. 2 接下来你可以看到如下图所示的画面,然后你再用上下键选择最新的内核(这里是第二行 ...

  9. zk和eureka的区别(CAP原则)

    作为服务注册中心,Eureka比Zookeeper好在哪里 著名的CAP理论指出,一个分布式系统不可能同时满足C(一致性).A(可用性)和P(分区容错性).由于分区容错性在是分布式系统中必须要保证的, ...

  10. HTML5 App的代码注入攻击

    原文链接 摘要 基于HTML5的手机app(译者注:以下简称HTML5 app)越来越流行了, 在大多数情况下它比native应用更容易适配不同的移动操作系统.它开发起来很方便,可以使用标准的web技 ...