客户端给服务端发送数据包。
TCP协议发送数据
public class TcpSendDemo {
public static void main(String[] args) {
// TODO Auto-generated method stub
Socket s=null;
OutputStream os=null;
try {
s=new Socket("192.168.1.106",8888);//这一步一成功,说明连接已经建立
os=s.getOutputStream();//获取输出流用于写数据
os.write("hello!!".getBytes());
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {//注意释放资源
try {
if(os!=null) os.close();
if(s!=null) s.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
TCP协议接收数据
public class TcpReceiveDemo {
public static void main(String[] args) {
// TODO Auto-generated method stub
ServerSocket ss=null;
Socket s=null;
InputStream is=null;
try {
ss=new ServerSocket(8888);
s=ss.accept();//监听客户端的连接,此方法在连接传入之前会一直阻塞
is=s.getInputStream();//获取输入流用于接收数据
byte[] bys=new byte[1024];
int len=0;
StringBuffer sb=new StringBuffer();
while((len=is.read(bys))!=-1) sb.append(new String(bys,0,len));
System.out.println(sb.toString());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {//注意释放资源
try {
if(is!=null) is.close();
if(s!=null) s.close();
if(ss!=null) ss.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
运行时先运行服务端,再运行客户端。