Socket套接字

来源:互联网 发布:乾隆 盖章 知乎 编辑:程序博客网 时间:2024/06/11 20:28

 Java语言在实现C/S模式中,套接字分为两类:
在Server端,ServerSocket类支持底层的网络通信;
在Client端,Socket类支持网络的底层通信。


Socket 

Socket sc=newSocket (ip,port)://建立socket

获取键盘输入

sc.getOutputStream(); //获取sc的



public class SenTcp_v1{

public static final String  IP="192.168.38.43";//ip地址
public static final int PORT=9875;//端口号
public Socket sk;//
public BufferedReader br;//键盘输入流
public  BufferedWriter bw;

public static void main(String[] args) {
SenTcp_v1 st=new SenTcp_v1();
st.send();
}

/**
* 客户端
*/
public void send(){
try {
sk=new Socket(IP,PORT);
System.out.println("输入消息");

systemIn(); // 键盘录入
buf(); // 初始化缓冲输出流
sendMessage();//写入信息
close(); //关闭流
} catch (IOException e) {
e.printStackTrace();
}
}


/**
* 从键盘获取信息
*/
public void systemIn(){
br=new BufferedReader(new InputStreamReader(System.in));
}

/**
* 初始化缓冲输出流
*/
public void buf(){
try {
bw=new BufferedWriter(new OutputStreamWriter(sk.getOutputStream()));

} catch (IOException e) {
e.printStackTrace();
}


}


/**
* 循环发送信息
*/
public void sendMessage(){
String line=null;

try {
while((line=br.readLine())!=null){
bw.write(line);
bw.newLine();
System.out.println("发送成功!");
bw.flush();
if(line.equals("over")){
System.out.println("客户端程序结束!");
break;
}
}
} catch (IOException e) {
e.printStackTrace();
}


/**
* 关闭流
*/
public void  close(){
try {
bw.close();
sk.close();
} catch (IOException e) {
e.printStackTrace();
}
}

server

ServerSocket ss=new ServerSocket(port); //建立serversocket

Socket sk=ss.accept();//开始监听指定端口




public class ReceiveTcp_v1 {
public ServerSocket ss;
public Socket socket;
public BufferedReader is;


public static void main(String[] args) {
ReceiveTcp_v1 tr=new ReceiveTcp_v1();
tr.receive();
}
/**
* 服务端
*/
public void receive() {
startServerSocket();//启东服务端 ,开始监听
bur(); // 初始化缓冲输入流
receivemasage(); //读取信息
close(); //关闭 流


}

/**
* 启动服务端 ,并开始监听
*/
public void startServerSocket() {
try {
ss = new ServerSocket(9875);
System.out.println("监听中!");
socket = ss.accept();
System.out.println("建立成功!");


} catch (IOException e) {
e.printStackTrace();
}
}

/**
* 初始化缓冲输入流
*/
public void bur() {
try {
is = new BufferedReader(
new InputStreamReader(socket.getInputStream()));
} catch (IOException e) {
e.printStackTrace();
}
}


/**
* 输出信息 ,并判断
*/
public void receivemasage(){
String line = null;
while (true) {
try {
line = is.readLine();
} catch (IOException e) {
e.printStackTrace();
}
if (line.equals("over")) {
System.out.println("服务端程序结束!");
break;
}
System.out.println(line);
}
}

/**
* 关闭流
*/
public void close() {
try {
is.close();
socket.close();
ss.close();
} catch (IOException e) {
e.printStackTrace();
}


}

原创粉丝点击