客户端socket调用
import java.net.Socket;
import java.io.*;
import java.util.Scanner;
import java.util.regex.Pattern;
import java.util.regex.Matcher; class SocketTest
{
public static void main(String[] args)
{
Scanner sc=new Scanner(System.in);
System.out.println("please input ipaddress:");
boolean isIp=false;
String strIp="";
//ip正则匹配
Pattern pattern=Pattern.compile("((?:(?:25[0-5]|2[0-4]\\d|((1\\d{2})|([1-9]?\\d)))\\.){3}(?:25[0-5]|2[0-4]\\d|((1\\d{2})|([1-9]?\\d))))");
while(!isIp){
//System.out.println(isIp);
strIp=sc.next();
Matcher matcher=pattern.matcher(strIp);
//如果输入的数据满足ip格式,继续运行
if(matcher.matches()){
isIp=true;
}
else{
System.out.println("the ip is wrong,please input again:");
}
}
int port=80;
boolean isNu=false;
//如果输入的为正确的端口号(整数)继续运行
while(!isNu){
try{
System.out.println("please input port");
String strPort=sc.next();
port=Integer.parseInt(strPort);
isNu=true;
}catch(Exception ex){
System.out.println("is not int ,please input agein:");
}
} System.out.println("the ip is :"+strIp);
System.out.println("the port is :"+port);
if(strIp!=null&&strIp.length()>0){
try{
//通过ip和端口创建socket实例
Socket socket=new Socket(strIp,port);
//获取socket的输出流
OutputStream outputStream=socket.getOutputStream();
//讲http请求头信息输入至socket输出流中
PrintWriter out=new PrintWriter(outputStream,true);
out.println("GET / HTTP/1.1"); //get 请求,获取目录为/ http协议为http 1.1
out.println("Host: localhost:8888");
out.println("Connection: Close");
out.println();
//接收服务端返回的数据流
BufferedReader in=new BufferedReader(new InputStreamReader(socket.getInputStream()));
boolean loop=true;
StringBuffer sb=new StringBuffer(8096);
while(loop){
if ( in.ready() ) {
int i=0;
while (i!=-1) {
i = in.read();
sb.append((char) i);
}
loop = false;
Thread.currentThread().sleep(50);
}
}
System.out.println(sb.toString());
socket.close();
}
catch (Exception ex) {
ex.printStackTrace();
System.out.println(ex.toString());
}
}
}
}
客户端socket调用的更多相关文章
- 服务器中判断客户端socket断开连接的方法
1, 如果服务端的Socket比客户端的Socket先关闭,会导致客户端出现TIME_WAIT状态,占用系统资源. 所以,必须等客户端先关闭Socket后,服务器端再关闭Socket才能避免TIME_ ...
- 服务器中判断客户端socket断开连接的方法【转】
本文转载自:http://www.cnblogs.com/jacklikedogs/p/3976208.html 1, 如果服务端的Socket比客户端的Socket先关闭,会导致客户端出现TIME_ ...
- 常量,字段,构造方法 调试 ms 源代码 一个C#二维码图片识别的Demo 近期ASP.NET问题汇总及对应的解决办法 c# chart控件柱状图,改变柱子宽度 使用C#创建Windows服务 C#服务端判断客户端socket是否已断开的方法 线程 线程池 Task .NET 单元测试的利剑——模拟框架Moq
常量,字段,构造方法 常量 1.什么是常量 常量是值从不变化的符号,在编译之前值就必须确定.编译后,常量值会保存到程序集元数据中.所以,常量必须是编译器识别的基元类型的常量,如:Boolean ...
- 客户端 SOCKET 编程
建立客户端的 Socket: 客户端应用程序首先也是调用 WSAStartup() 函数来初始化 Winsock 的动态连接库,然后同样 调用 socket() 来建立一个 TCP 或 UDP Soc ...
- WCF服务客户端首页调用慢的问题处理
场景: WCF服务架设于IIS服务中,走TCP协议.客户端首次调用特别慢,第一次加载完后,都正常. 解决: 把服务中需要序列化的模型所在的工程 > 属性 > 生成 > 生成序列化程序 ...
- WCF初探-11:WCF客户端异步调用服务
前言: 在上一篇WCF初探-10:WCF客户端调用服务 中,我详细介绍了WCF客户端调用服务的方法,但是,这些操作都是同步进行的.有时我们需要长时间处理应用程序并得到返回结果,但又不想影响程序后面代码 ...
- WebService的发布及客户端的调用
一.目录 1.JAX-WS发布WebService 1.1 创建一个简单的WS 1.2 打包部署和发布 2.CXF+Spring发布WebService 3.客户端的调用方式 二.正文 1. JAX- ...
- socket系列之客户端socket——Socket类
假设TCP套接字服务器端已经建立好并正在监听客户端的连接了,那么客户端就可以通过Socket类来发起连接.客户端发起一个连接请求后,就被动地在等待服务器的响应.这个类同样位于java.net包中,包含 ...
- Axis2 WebService客户端Axis2调用
第一RPC方式,不生成客户端代码 第二,document方式,不生成客户端代码 第三,用wsdl2java工具,生成客户端方式调用 package samples.quickstart.client; ...
随机推荐
- 苹果页面启动icon大小(57*57 114*114)
苹果页面启动icon大小(57*57 114*114)做的时候要弄成正方形
- 通过qsort(void * lineptr[], int left, int rifht, int (*comp)(void *, void *))解读指针函数和void指针
原函数是<The C programint language >5.11文本行排序的程序,如下: void qsort(void *v[], int left, int right, i ...
- Java-继承的应用
class array { private int[] temp; private int foot; public array(int len) //为temp数组规定大小,并开辟空间,申 ...
- 安装javajava整合Flex
PS:今天上午,非常郁闷,有很多简单基础的问题搞得我有些迷茫,哎,代码几天不写就忘.目前又不当COO,还是得用心记代码哦! 这几天在学一个叫Flex的东西,之前也没搞过这一类的东西认为既神秘又生疏,随 ...
- ruby将mysql查询到的数据保存到excel
require "win32ole" require 'pathname' require 'mysql2' excel = WIN32OLE.new('excel.applica ...
- 办理康卡迪亚大学(本科)学历认证『微信171922772』Concordia学位证成绩单使馆认证Concordia University
办理康卡迪亚大学(本科)学历认证『微信171922772』Concordia学位证成绩单使馆认证Concordia University Q.微信:171922772办理教育部国外学历学位认证海外大学 ...
- DPDK support for vhost-user
转载:http://blog.csdn.net/quqi99/article/details/47321023 X86体系早期没有在硬件设计上对虚拟化提供支持,因此虚拟化完全通过软件实现.一个典型的做 ...
- hdu1037
#include <iostream> #include <cstdio> using namespace std; int main() { int a,b,c; while ...
- WPF wpf scrollviewer 触屏滚动 窗体弹跳
触屏滚动实现 设置属性 在ScrollViewer的xaml代码那里加上 PanningMode="Both" 在ScrollViewer的xaml代码那里加上 Manipula ...
- hadoop端口配置指南
获取默认配置 配置hadoop,主要是配置core-site.xml,hdfs-site.xml,mapred-site.xml三个配置文件,默认下来,这些配置文件都是空的,所以很难知道这些配置文件有 ...