您的位置:首页 > 其它

Socket通信简单实现客户端-服务器消息发送

2017-03-03 13:25 831 查看
在这里我主要涉及到的是TCP通信,TCP是面向连接的可靠的传输协议。数据传输的单位是报文段。
用户数据报协议(UDP协议)提供无连接的尽最大努力的不可靠的数据传输服务。他们主要属于运
用层协议如FTP、SMTP等)-运输层(TCP或UDP)-网络层-数据链路层-物理层。
在TCP协议中,每一条TCP连接只能有两个端点,全双工通信并且是面向字节流的。
简单的Java实现代码如下:
服务端:
1.在服务端建立ServerSocket并绑定相应的和端口
2.使用accept()方法等待连接
3.利用输入流获取输入的内容
4.关闭连接


package ServerSocket;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;

/*
* 当一台计算机需要与另一台计算机通信时,需要知道另一台计算机的地址,那就是IP,或者说是域名
* 一旦建立连接,客户端和服务器就可以通过套接字进行通信
*/
public class Server {

public static void main(String[] args) {
ServerSocket serverSocket;
Socket socket=null;
try {
serverSocket = new ServerSocket(8000);
System.out.println("服务器已经启动!");
socket = serverSocket.accept();//等待客户端连接
System.out.println("创建客户连接...");
InputStream input = socket.getInputStream();//获取输入流
InputStreamReader isr = new InputStreamReader(input);//字节流和字符流通信的桥梁,相当于将字节流转化为字符流
BufferedReader reader = new BufferedReader(isr);
while(true){
String str = reader.readLine();//整行读取内容
if(str.equals("exit")){
break;//退出
}

System.out.println("接收内容:"+str);
}
System.out.println("连接断开");
reader.close();
isr.close();
input.close();
socket.close();
serverSocket.close();

} catch (IOException e) {

e.printStackTrace();
}

}

}


客户端:

1.使用套接字连接,当客户端创建连接Socket并且向服务端发送请求。

2.连接成功后发送输入内容

package ServerSocket;

import java.io.IOException;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Scanner;

//实现客户端代码
public class Client {

@SuppressWarnings("resource")
public static void main(String[] args) {

try {

Socket socket = new Socket("127.0.0.1", 8000);
OutputStream os = socket.getOutputStream();

Scanner input = new Scanner(System.in);
while (true) {
System.out.print("请输入内容:");
String str = input.nextLine();

os.write((str+"\n").getBytes());//通过转
os.flush();
}
} catch (UnknownHostException e) {

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

e.printStackTrace();
}
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  socket
相关文章推荐