Java Socket网络编程Client端详解
2024-08-24 04:57:57
此类实现客户端套接字(也可以就叫“套接字”)。套接字是两台机器之间的通信端点。
Socket client = new Socket(ip,port);//创建一个流套接字并将其连接到指定 IP 地址的指定端口号。
以下为完整的客户端示例:
SocketClientDemo.java
public class SocketClientDemo
{
/**
* 向指定的地址发送请求数据
* @param ipAddr
* @param reqData
*/
public void sendReq(String ipAddr,String reqData)
{
Socket client = null;
BufferedReader br = null;
BufferedOutputStream bos = null;
String respStr = ""; //设置字符集编码格式
String characterCoding = "GBK"; //将ip:port 类型的字符串拆分
int dotPos = ipAddr.indexOf(":");
String ip = ipAddr.substring(0, dotPos).trim();
int port = Integer.parseInt(ipAddr.substring(dotPos+1).trim()); try
{
client = new Socket(ip,port);
//设置发送等待时间(单位:s)
client.setSoLinger(true, 5); //设置超时时间(单位:ms)
client.setSoTimeout(5000); //从client端获取输出流
bos = new BufferedOutputStream(client.getOutputStream());
bos.write(reqData.getBytes(characterCoding));
bos.flush(); br = new BufferedReader(new InputStreamReader(client.getInputStream()));
respStr = br.readLine();
System.out.println("respStr is:>>>>>>"+respStr);
}
catch (UnknownHostException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
finally
{
if(br != null)
{
try
{
br.close();
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(bos!=null)
{
try
{
bos.close();
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(client!=null)
{
try
{
client.close();
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}
测试类代码:
SocketClientTest.java
public class SocketClientTest
{ /**
* @param args
*/
public static void main(String[] args)
{
// TODO Auto-generated method stub
SocketClientDemo client = new SocketClientDemo();
client.sendReq("192.168.1.136:9997", "this is socket client!");
}
}
最新文章
- [翻译]——SQL Server使用链接服务器的5个性能杀手
- 推荐20款基于 jQuery &; CSS 的文本效果插件
- get传递中文产生乱码的解决方式汇总
- [转]30分钟学会反向Ajax
- Codeforces Round #197 (Div. 2) : E
- elasticsearh 中每个节点中需要有相同的插件
- 2015第10周三jquery ui position
- this class is not key value coding-compliant for the key detailItem
- 简单的mvc之二:蜿蜒的管线
- vue各种插件汇总
- head里两个重要标签base和meta
- SQLServer修改表数据
- jar 包启动脚本
- [UI] UI things
- Linux Ubuntu下用Android NDK 生成独立交叉编译链
- Beta阶段第三篇Scrum冲刺博客-Day2
- 《数据挖掘:R语言实战》
- golang sizeof 占用空间大小
- C#中的Sealed和J#中的Final比较(转载)
- Codeforces Round #294 (Div. 2) A and B and Lecture Rooms(LCA 倍增)
热门文章
- Simple microcontroller-temperature measurement uses only a diode and a capacitor
- win7 系统装SQLServer2000 成功
- cocos3.0使用cocostudio动画帧结合地图对象键值创建精灵动画
- Linux使用jstat命令查看jvm的GC情况(转)
- ASP.NET Core 1.0 基础之配置
- linux ifconfig
- thymleaf th:text 和 th:utext 之间的区别
- 如何在jenkins上通过mvn方式运行sonar
- http://www.cnblogs.com/zhoujinyi/p/3437475.html
- asp中将系统货币符号¥改为美国货币符号$的做法