Tcp小记

注意的重点:在客服端和服务端 数据传输互访时,因为有太多是阻塞式方法。输出时记得 加上换行标记newLine()、flush
()刷新缓冲区,如果不行必须代码有意识的加入标记操作符或文字,避免无休止的等待。
PrintWriter  p= new PrintWriter(ss.getOutputStream(   )  ,true);
p.println();这个方法也是带换行标记的(换行标记就是回车符),XReader对象的reader()或newLine()也能唤醒;


/** 客服端 */
public class Tcpclient {


/**
* TCP是面向连接的 Socket对象,对象一建立就可以连接指定的主机。
* 在客服端建立连接时,就要有服务端存在,一但连接成功,形成通路有,就该在通路之间进行数据的传输; 步骤:
* 1.创建Socket服务,并指定服务器和端口; 2.用Socket的网络流(IO)传输数据;
*
* @throws Exception
* @throws UnknownHostException
*/


public static void main(String[] args) throws Exception {
// 创建对象
Socket s = new Socket("192.168.1.101", 10002);
// 传输数据;
OutputStream ou = s.getOutputStream();
byte[] buf = "886".getBytes();
ou.write(buf);


InputStream i = s.getInputStream();
byte[] buff = new byte[1024];
int len = i.read(buff);


String str = new String(buff, 0, len);
System.out.println(str);


System.out.println("`````````````````");
s.close();


}


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


public class TcpSeverSocket {


/**
* 1.建立服务端的SeverSocket的服务,并监听一个端口
* 2、获取连接过来的客服端的对象。accept是一个阻塞式方法;所以没有连接的时候它会等。
* 3.服务端会使用客服端发送过来对应的对象,并使用客服端发送过来的流来读取发过来的信息数据
*  4.关闭服务端(可选操作);
*
* @throws Exception
*/
public static void main(String[] args) throws Exception {
ServerSocket ss = new ServerSocket(10002);
Socket socket = ss.accept();
InputStream i = socket.getInputStream();
byte[] buf = new byte[1024];
int len = 0;
while ((len = i.read(buf)) != -1) {


String str = new String(buf, 0, len);
String ip = new String(socket.getInetAddress().getHostAddress());
System.out.println(ip);
System.out.println(str);
if ("886".equals(str))//有意识的打断无休止的阻塞
break;


}
OutputStream o = socket.getOutputStream();
byte[] bufoo = "nihaoclient".getBytes();
o.write(bufoo);
o.flush();


System.out.println("`````````````1");
socket.close();


}


}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值