package?com.imooc.tcpsocket;
import?java.io.IOException;
import?java.io.InputStream;
import?java.net.ServerSocket;
import?java.net.Socket;
public?class?TCPServer?{
public?static?void?main(String[]?args)?throws?IOException?{
//服務端接收客戶端發送的數據,并打印在控制臺上。
//1。創建服務端socket服務。通過ServerSocket對象
//2.服務端必須對外提供一個端口,否則客戶端無法連接。
ServerSocket?ss=new?ServerSocket(10002);
//3.獲取連接過來的客戶端對象。
Socket?s=ss.accept();//阻塞式
String?ip=s.getInetAddress().getHostAddress();
//4.通過客戶端對象獲取socket流讀取客戶端發來的數據,并打印在控制臺上。
InputStream?in=s.getInputStream();
byte[]?buf=new?byte[1024];
int?len=in.read(buf);
String?text=new?String(buf,?0,?len);
System.out.println(ip+":"+text);
//5.關閉資源。關客戶端,關服務端(服務端一般不關閉)
s.close();
ss.close();
}
}
package?com.imooc.tcpsocket;
import?java.io.IOException;
import?java.io.OutputStream;
import?java.net.InetAddress;
import?java.net.Socket;
import?java.net.UnknownHostException;
public?class?TCPClient?{
public?static?void?main(String[]?args)?throws?IOException?{
System.out.println(InetAddress.getLocalHost().getHostAddress());
//TCP傳輸,客戶端建立過程
//1.創建tcp客戶端socket服務,使用socket對象。
//建議該對象一創建就明確目的地。要連接的主機。
Socket?socket=new?Socket(InetAddress.getLocalHost().getHostAddress(),?10002);
//2.如果連接建立成功,說明數據通道已建立。
//該通道是socket流,是底層建立好的,既然是流,說明既有輸入,又有輸出。
//想要輸入或輸出流對象,可以找socket來獲取。
//可以通過getOutputStream()和getInputStream()來獲取2個字節流
OutputStream?out=socket.getOutputStream();
//3.使用輸出流,將數據寫出。
out.write("hello,again!!!~".getBytes());
//4.關閉資源
socket.close();
}
}
添加回答
舉報
0/150
提交
取消