/**
*@ author StormMaybin
*@ date 2016-10-03
*/
生命不息,奋斗不止
连接到服务器
package com.stormma.socket;
import java.io.IOException;
import java.io.InputStream;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Scanner;
public class SocketConnect
{
/**
* @param args
* @throws IOException
* @throws UnknownHostException
*/
public static void main(String[] args) throws UnknownHostException, IOException
{
// TODO Auto-generated method stub
//带资源的try语句
//time-A.timefreq.bldrdoc.gov为一个事件服务,对应ip132.164.4.103
/**
* Socket (String host, int port)
* host是主机名,port是端口号
*/
try(Socket s = new Socket ("time-A.timefreq.bldrdoc.gov", 13))
{
//得到输入流
InputStream inStream = s.getInputStream();
Scanner in = new Scanner (inStream);
while (in.hasNext())
{
String line = in.nextLine();
System.out.println(line);
}
}
}
}
设置套接字超时间
//设置超时时间为10s,单位毫秒值
s.setSoTimeout (10000);
获取主机信息
package com.stormma.socket;
import java.net.InetAddress;
import java.net.UnknownHostException;
public class SocketDemo
{
/**
* 获取主机的信息
* @param args
*/
public static void main(String[] args)
{
// TODO Auto-generated method stub
InetAddress address = null;
try
{
address = InetAddress.getLocalHost();
}
catch (UnknownHostException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("主机名"+address.getHostName());
System.out.println("IP地址"+address.getHostAddress());
InetAddress address1 = null;
//根据IP地址获取主机名
try
{
address1 = InetAddress.getByName("192.168.30.1");
System.out.println("根据IP地址获取主机名" + address1.getHostName());
}
catch (Exception e)
{
e.printStackTrace();
}
//根据主机名获取IP地址信息
InetAddress address2 = null;
try
{
address2 = InetAddress.getByName("StormMaybin");
System.out.println("根据主机名获取到IP地址" + address2.getHostAddress());
}
catch (Exception e)
{
e.printStackTrace();
}
}
}
实现服务器端
package com.stormma.socket;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;
public class Server
{
/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException
{
// TODO Auto-generated method stub
System.out.println("服务器已经启动,等待连接······");
try(ServerSocket s = new ServerSocket(8888))
{
//没有客户端连接时一直阻塞,直到客户端连接
try (Socket incoming = s.accept())
{
System.out.println("有客户端连入");
//得到输入流
InputStream inStream = incoming.getInputStream();
//得到输出流
OutputStream outStream = incoming.getOutputStream();
try (Scanner in = new Scanner (inStream))
{
PrintWriter out = new PrintWriter(outStream);
out.println("客户端,你好!退出请输入exit!");
boolean flag = false;
while (!flag && in.hasNext())
{
String line = in.nextLine();
out.println(line);
if (line.trim().toLowerCase().equals("exit"))
{
flag = true;
}
}
}
}
}
}
}
实现客户端
package com.stormma.socket;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Scanner;
public class Client
{
/**
* @param args
*/
private static final String host = "localhost";
private static final int port = 8888;
public static void main(String[] args) throws UnknownHostException, IOException
{
// TODO Auto-generated method stub
try (Socket s = new Socket (host, port))
{
InputStream inStream = s.getInputStream();
OutputStream outStream = s.getOutputStream();
PrintWriter out = new PrintWriter(outStream);
//输入流读取
Scanner scan = new Scanner(inStream);
//控制台输入
Scanner in = new Scanner(System.in);
//标记,如果是0则读取输入流的,如果是1读取客户端
int turn = 0;
if (turn == 0)
{
String responce = scan.nextLine();
System.out.println("服务端说: "+responce);
turn = 1;
}
if (turn == 1)
{
String line = in.nextLine();
//写入到输出流中 发送信息到服务器
out.write(line);
turn = 0;
}
}
}
}
第一篇就到这,如有错误,欢迎指出。