Socket简单通信

最近感觉网络编程方面知道的比较少,今天做了一个小例子,就是客服端与服务器端的连接,使用了多线程,具体的代码如下:

服务器端:

package com.bmldyq.sockey.server;

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;

public class SocketServer {

 public static void main(String[] args) {
     new SocketServer().star();
 }

 public void star() {
  ServerSocket serverSocket = null;
  try {
   serverSocket = new ServerSocket(8888);
   while (true) {
    Socket socket = serverSocket.accept();
    Thread th = new Thread(new ServerHandler(socket));
    th.start();
   }
  } catch (IOException e) {
   e.printStackTrace();
  }
 }

 public class ServerHandler extends Thread {

  private Socket socket;

  public ServerHandler(Socket socket) {
   this.socket = socket;
  }

  @Override
  public void run() {
   // 用于向客户端发送数据的输出流
   try {
    DataOutputStream dos = new DataOutputStream(socket.getOutputStream());
    // // 接受客服端发过来的请求
    DataInputStream dis = new DataInputStream(socket.getInputStream());
    String msg=dis.readUTF();
    System.out.println("客服端:"+msg+" 已连接!");
    // 向客服端发送信息
    dos.writeUTF(msg+"服务器端正常连接");
   } catch (IOException e) {
    e.printStackTrace();
   }
  }

 }
}

客服端:

package com.bmldyq.sockey.client;

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Scanner;

public class Client {
 public static void main(String[] args) {
  new Client().connectionServer();

 }
 
 private void connectionServer(){
  Socket socket = null;
  System.out.println("请输入用户名:");
  Scanner sc = new Scanner(System.in);
  String uname = sc.next();
  System.out.println("请输入密码:");
  String upwd = sc.next();
  if (!uname.equals("") && !upwd.equals("")) {
   System.out.println("登陆成功,正在进行服务器连接...");
   try {
    socket = new Socket("localhost", 8888);
    DataOutputStream dos = new DataOutputStream(socket
      .getOutputStream());
    DataInputStream dis = new DataInputStream(socket
      .getInputStream());
    // 向服务器段写入请求
    dos.writeUTF(uname);
    System.out.println(dis.readUTF());
    connectionServer();
   } catch (UnknownHostException e) {
    e.printStackTrace();
   } catch (IOException e) {
    e.printStackTrace();
   }

  } else {
   System.out.println("登陆失败,系统将退出!");
   System.exit(0);
  }
 }
}

 

就是客服端输入用户信息进入服务器端的连接并且返回连接信息,比较简单

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Socket 是一种在计算机之间进行通信的方式。下面是一个简单Socket 通信实验的操作过程: 1. 创建服务器端程序 首先,需要创建一个服务器程序。这个程序将监听来自客户端的连接请求,并与客户端进行通信。可以使用任何编程语言来实现这个程序,但是我们这里以 Python 为例,使用 `socket` 模块来实现。 ```python import socket HOST = 'localhost' # 主机名 PORT = 8000 # 端口号 # 创建一个 TCP/IP socket 对象 sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 绑定到指定的主机名和端口号 sock.bind((HOST, PORT)) # 开始监听连接请求 sock.listen(1) # 等待连接 conn, addr = sock.accept() print('Connected by', addr) # 接收客户端发送的消息 data = conn.recv(1024) print('Received:', data.decode()) # 发送消息给客户端 conn.sendall('Hello, client!'.encode()) # 关闭连接 conn.close() ``` 2. 创建客户端程序 接下来,需要创建一个客户端程序。这个程序将连接到服务器,发送一条消息,并等待服务器的回复。 ```python import socket HOST = 'localhost' # 主机名 PORT = 8000 # 端口号 # 创建一个 TCP/IP socket 对象 sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 连接到指定的主机名和端口号 sock.connect((HOST, PORT)) # 发送消息给服务器 sock.sendall('Hello, server!'.encode()) # 接收服务器发送的消息 data = sock.recv(1024) print('Received:', data.decode()) # 关闭连接 sock.close() ``` 3. 运行程序 现在,可以在终端窗口中运行这两个程序了。首先,需要运行服务器程序: ``` $ python server.py ``` 接着,在另一个终端窗口中运行客户端程序: ``` $ python client.py ``` 如果一切正常,客户端将发送一条消息给服务器,服务器将回复一条消息给客户端,然后两个程序将关闭连接并退出。 这就是一个简单Socket 通信实验的操作过程。需要注意的是,这只是一个简单的示例,实际的 Socket 通信可能涉及到更多的细节和复杂性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值