问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

java中如何创建socket连接的过程?

发布网友 发布时间:2022-04-20 07:06

我来回答

3个回答

热心网友 时间:2022-07-13 02:35

这是我写过的一个简单聊天软件客户端  你参考下

import java.util.*;
import java.io.*;
import java.net.*;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class testChatClient extends JFrame
{
private JTextArea jta = new JTextArea();
private JTextField jtf = new JTextField();
private JComboBox<String> jcb = new JComboBox<String>();
private JButton jbsend = new JButton("send");
private JButton jbrefresh = new JButton("refresh");
private InputStream input;
private OutputStream output;
privateSocket socket;
public static String SERVER_IP = "192.168.1.101";
public static int SERVER_PORT = 8888;
// Message 1 -> refresh message
// Message 2 -> send message
public testChatClient()
{
initComponents();
try
{
socket = new Socket(SERVER_IP,SERVER_PORT);
input = socket.getInputStream();
output = socket.getOutputStream();
}
catch(IOException e)
{
System.err.println(e);
}
jbrefresh.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
jta.setText("");
try
{
if(socket == null)
socket = new Socket(SERVER_IP,SERVER_PORT);
output.write(0x31);

catch (IOException ex)
{
JOptionPane.showConfirmDialog(null, ex);
}
}
});
jbsend.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
if(jtf.getText() == null || jtf.getText().equals(""))
return;
if(jtf.getText().length() >= 400)
{
JOptionPane.showConfirmDialog(null,"最大字数不能超过400");
return;
}
try
{
String destination = jcb.getSelectedItem().toString();
String message = jtf.getText();
if(socket == null)
socket = new Socket(SERVER_IP,SERVER_PORT);
byte[] temp = new byte[3 + destination.getBytes().length + message.getBytes().length];
temp[0] = 0x32;
temp[1] = (byte)destination.getBytes().length;
int i = 2;
for(int j = 0; j < destination.getBytes().length ; i++ , j++)
temp[i] = destination.getBytes()[j];
temp[i++] = (byte)message.getBytes().length;
for(int j = 0 ; j < message.getBytes().length ; i++ , j++)
{
temp[i] = message.getBytes()[j];
System.out.println();
}
output.write(temp);
jta.append("me:\n");
jta.append(jtf.getText());
jta.append("\n");
jtf.setText("");
}
catch(IOException ex)
{
System.err.println(ex);
}
}
});
try
{
jbrefresh.doClick();
while(true)
{
byte[] tempBytes = new byte[1000];
input.read(tempBytes);
int command = tempBytes[0] - 0x30;
// int readLength = input.read();
switch(command)
{
case 1:
{
int readLength = tempBytes[1];
String[] temp = new String(tempBytes,2,readLength,"UTF-8").split(";");
jcb.removeAllItems();
if(temp.length == 0 && temp[0].equals(""))
return;
for(int i = 0 ; i < temp.length ;i++)
{
jcb.addItem(temp[i]);
}
jcb.setSelectedIndex(0);
break;
}
case 2:
{
int readLength1 = tempBytes[1];
jta.append(new String(tempBytes,2,readLength1,"UTF-8") + "\n");
int readLength2 = tempBytes[2 + readLength1];
jta.append(new String(tempBytes,3 + readLength1,readLength2,"UTF-8") + "\n");
break;
}
}
}
}
catch(IOException e)
{
System.err.println(e);
}
}
public static void main(String[] args) {
testChatClient frame = new testChatClient();
}
public void initComponents()
{
setLayout(new BorderLayout());
JPanel jpNorth = new JPanel();
jpNorth.setLayout(new BorderLayout());
jpNorth.add(jcb,BorderLayout.CENTER);
jpNorth.add(jbrefresh,BorderLayout.EAST);
JPanel jpSouth = new JPanel();
jpSouth.setLayout(new BorderLayout());
jpSouth.add(jtf,BorderLayout.CENTER);
jpSouth.add(jbsend,BorderLayout.EAST);
add(jpNorth,BorderLayout.NORTH);
add(jpSouth,BorderLayout.SOUTH);
add(new JScrollPane(jta),BorderLayout.CENTER);
this.getRootPane().setDefaultButton(jbsend);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(300,600);
setVisible(true);
}
}

热心网友 时间:2022-07-13 02:36

Java 建议使用Jpcap这个封装好的功能包括几乎所有winpcap的。
百度一下,有帮助文档和Demo可以自己看下。需要的话我也可以上传给你

热心网友 时间:2022-07-13 02:36

//创建Socket 客户端对象
Socket s = new Socket("127.0.0.1",6666);

//创建ServerSocket 服务器端对象。。
ServerSocket ss = new ServerSocket(6666);
//监听服务器连接
s = ss.accept();
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
一道物理题,我用的是能量守恒定律,老师说我的重力做功的高度出错了... 电脑怎么配:使用模拟器多开阴阳师? 如何在笔记本电脑上安装阴阳师阴阳师手游怎么用电脑玩电脑上玩阴阳师... 苹果笔记本macbook能玩阴阳师吗? 苹果笔记本可以玩iOS版的阴阳师吗? 2024年河南理科579分能考上什么大学? 2024年河南文科582分能考上什么大学? 河南文科580分能报考什么大学 失落城堡手游收费吗 要多少钱价格一览 失落城堡手游要钱吗介绍_失落城堡手游要钱吗是什么 Java Socket连接问题 java编程中,Socket通信是怎么实现的? java建立socket连接 java简答题 如何创建socket连接的过程 java中如何创建socket连接的过程 java Socket通信原理 祝福 诗词 对新一年美好祝愿诗句 古诗词里最美好的祝愿 求新年祝福词语 给同事发什么春节祝福,要轻松一些的(60字以内)? 幼儿园开学祝福语古诗 关于“错”的诗句 代表美好的诗词 含有错的诗句有哪些? 表达美好祝愿的诗句有哪些 关于新年的宋词 元旦快乐的诗句 关于迎新年的诗句古诗 探春令表达了作者怎样的感情 java中Socket通信 JAVA socket通信 Java Socket 长连接怎么实现 java关于socket多连接 java中怎么判断socket是否连接成功 java中的socket是什么意思? java的socket通信 Java Socket 连接不上服务器 java socket如何实现客户端与客户端的交互? java socket连接问题 如何让socket连接跨过路由器 java中用socket实现客户端与服务端双向连接问题 java关于Socket连接错误问题 java中使用Socket连接,关闭是出异常如何处理? 减肥酵制作方法,谁会呢?求方法~~~~~~ 华为nove4进水后出现频闪之后黑屏,但是应用提示音... 华为Nova4淋雨之后手机屏幕不定时的闪一下,前置摄... 华为nova4屏幕换一个多少钱? 怎么自己做减肥酵素 刚买的华为nova4刚才换了个主题后屏幕总是自动显示... 华为nova4手机屏幕裂成这个样子,内外屏都坏了吗?...