创建TCP客户端
1,创建TCP客户端socket服务,使用的是socket对象。建议该对象一创建就明确目的地(要连接的主机,端口)。
2,如果连接建立成功,就说明数据传输通道已建立。该通道就是socket流,是底层建立好的。想要输入或者输出流对象,可以去找socket来获取。getOutputStream( ) 或 getInputStream( )
3,使用输出流,将数据写出。
4,关闭资源。
public static void clientDemo() throws UnknownHostException, IOException{
Socket socket = new Socket("192.168.3.116",10001);
OutputStream out = socket.getOutputStream();//使用客户端的输出流 将数据发送给服务器
out.write("TCP客户端发送的数据".getBytes());//发送数据到服务端
InputStream in = socket.getInputStream();//使用客户端的输入流 获取服务器返回的数据
byte[] buf = new byte[1024];
int len = in.read(buf);
String str = new String(buf,0,len);
System.out.println( "server:"+str);//服务端反馈的数据
socket.close();
}
创建TCP服务端
1,创建服务端socket服务。通过ServerScoket对象。
2,服务端必须对外提供一个端口,否则客户端无法连接。
3,获取连接过来的客户端对象。
4,通过客户端对象,获取socket流,读取客户端发送的数据。
5,关闭资源。关闭客户端,关闭服务端。
public static void serverDemo() throws IOException{
ServerSocket serverSocket = new ServerSocket(10001);
Socket socket = serverSocket.accept();
InputStream in = socket.getInputStream();
byte[] buf = new byte[1024];
int len = in.read(buf);
String str = new String(buf,0,len);
String ip = socket.getInetAddress().getHostAddress();
System.out.println(ip+ " : " + str);//接收到的客户端发送的数据
OutputStream out = socket.getOutputStream();
out.write("接收到客户端数据".getBytes());//返回信息给客户端
socket.close();
serverSocket.close();
}
-------------------------TCP服务端返回键盘输出的字母的大写字符串------------------------------
客户端示例代码:
public static void clientDemo() throws UnknownHostException, IOException{
Socket s = new Socket("192.168.3.116",10004);
BufferedReader bufr =
new BufferedReader(new InputStreamReader(System.in));//获取键盘录入
PrintWriter out = new PrintWriter(s.getOutputStream(),true);//socket输出流 输出数据到服务端
BufferedReader bufin = new BufferedReader(new InputStreamReader(s.getInputStream()));//获取服务端返回的数据
String line = null;
while((line = bufr.readLine())!=null){
if("over".equals(line)){
break;
}
out.println(line);//发送数据给服务端
String upperStr = bufin.readLine();
System.out.println("服务端返回的数据"+upperStr);
}
s.close();
}
服务端示例代码:
public static void serverDemo() throws IOException{
ServerSocket ss = new ServerSocket(10004);
Socket s = ss.accept();
System.out.println(s.getInetAddress().getHostAddress()+"connection....");
BufferedReader bufIn = new BufferedReader(new InputStreamReader(s.getInputStream()));
PrintWriter out = new PrintWriter(s.getOutputStream(),true);
String str = null;
while((str=bufIn.readLine())!=null){
System.out.println("服务端接收到数据:"+str);
out.println(str.toUpperCase());
}
s.close();
ss.close();
}