导航:首页 > 编程语言 > socket程序java

socket程序java

发布时间:2022-08-18 22:01:25

java简单的socket程序

是可以的,客户端可以多次运行,前提是服务器端必需采用多线程,或是非阻塞的方式来监听客户端的连接请求。服务器端 思想,当客户端连接到来时,利用这个socket创建一个新的线程,并启动。当然,这只不过是最简单的性能最差的方法。你可以使用线程池在java.util.concurrent包中有线程池的实现类Executors你可以通过它的ExecutorService executorService=Executors.newFixedThreadPool(int threadSize);来创建一个线程池。当客户端连接到来时你可以创建一个线程类(handler)然后调用线程池的execute方法指行一个此线程。如:executorService.execute(new Handler(socket));。当然,如果你考虑性能,那么你最好使用nio(非阻塞)来处理,在java.nio.channels包下面有相应的类能处理nio。你可以去查看相关的资料。。

Ⅱ java Socket通信原理

具体如下:

首先socket 通信是基于TCP/IP 网络层上的一种传送方式,我们通常把TCP和UDP称为传输层。其中UDP是一种面向无连接的传输层协议。UDP不关心对端是否真正收到了传送过去的数据。

如果需要检查对端是否收到分组数据包,或者对端是否连接到网络,则需要在应用程序中实现。UDP常用在分组数据较少或多播、广播通信以及视频通信等多媒体领域。

在这里我们不进行详细讨论,这里主要讲解的是基于TCP/IP协议下的socket通信。

socket是基于应用服务与TCP/IP通信之间的一个抽象,他将TCP/IP协议里面复杂的通信逻辑进行分装。

服务端初始化ServerSocket,然后对指定的端口进行绑定,接着对端口及进行监听,通过调用accept方法阻塞。

此时,如果客户端有一个socket连接到服务端,那么服务端通过监听和accept方法可以与客户端进行连接。

Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。

Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。

Java具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点。Java可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等。

Ⅲ Java的Socket编程

要通信首先要建立socket链接。
1 ab客户端与服务端建立socket链接
2 a客户端发送消息到服务端
3 服务端收到消息后,发送到指定的b客户端
4 b客户端处理来自服务端的消息

Ⅳ java简答题 如何创建socket连接的过程

java socket建立连接的过程如下:
socket

1、 首先调用Socket类的构造函数,以服务器的指定的IP地址或指定的主机名和指定的端口号为参数,创建一个Socket流,在创建Socket流的过程中包含了向服务器请求建立通讯连接的过程实现。
2、 建立了客户端通讯Socket后。就可以使用Socket的方法getInputStream()和getOutputStream()来创建输入/输出流。这样,使用Socket类后,网络输入输出也转化为使用流对象的过程。
3、 使用输入输出流对象的相应方法读写字节流数据,因为流连接着通讯所用的Socket,Socket又是和服务器端建立连接的一个端点,因此数据将通过连接从服务器得到或发向服务器。这时我们就可以对字节流数据按客户端和服务器之间的协议进行处理,完成双方的通讯任务。
4、 待通讯任务完毕后,我们用流对象的close()方法来关闭用于网络通讯的输入输出流,在用Socket对象的close()方法来关闭Socket。

Ⅳ java 中socket实现通信的原理

1.
所谓Java
socket通信通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄。应用程序通常通过"套接字"向网络发出请求或者应答网络请求。
2.
socket
开发分客户端与服务端
3.
服务端开启服务监听某一端口
4.
客户端向此服务器的这个端口发出请求,成功则会建立会话,形成通道.
5.
这个通道若不做其它操作会一直存在,就是所谓的长连接了,这时服务端与客户端可以通过此通道进行即时通信

Ⅵ 用JAVA编写一个socket通信程序。

importjava.io.BufferedReader;
importjava.io.InputStreamReader;
importjava.net.ServerSocket;
importjava.net.Socket;

publicclassServer{

publicstaticvoidmain(String[]args){
ServerSocketss;
Sockets;
try{
ss=newServerSocket(8888);
s=ss.accept();
InputStreamReaderisr=newInputStreamReader(s.getInputStream());
BufferedReaderbr=newBufferedReader(isr);

System.out.println(br.readLine());
br.close();
isr.close();

}catch(Exceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}


}

}

importjava.io.PrintWriter;
importjava.net.Socket;


publicclassClient{

publicstaticvoidmain(String[]args){

try{
Sockets=newSocket("127.0.0.1",8888);

PrintWriterpw=newPrintWriter(s.getOutputStream());
pw.write("helloserver");
pw.flush();

pw.close();
}catch(Exceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}

}

}

Ⅶ 运用socket编写一个JAVA程序

/*服务器端程序:*/
mport java.net.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import javax.swing.*;

class ChatServer extends JFrame{
private JTextField inputBox;
private JTextArea outFrame;
private ObjectOutputStream outputS;
private ObjectInputStream inputS;
private ServerSocket toserver;
private Socket server;
private String message = "";
private int counter = 1;

ChatServer(){
super("Server");

Container container = getContentPane();
inputBox = new JTextField();
inputBox.setEditable(false);
//输出
inputBox.addActionListener(
//监听
new ActionListener(){
public void actionPerformed(ActionEvent ev)
{
sendMsg(ev.getActionCommand());
inputBox.setText(" ");
}
});
container.add(inputBox,BorderLayout.NORTH);
//输出框
outFrame = new JTextArea();
container.add(new JScrollPane(outFrame),
BorderLayout.CENTER);
setSize(208,160);
setVisible(true);
}

public void connectServer(){

try{
//创建一个ServerSocket
toserver = new ServerSocket(4000);
while(true){
//等待连接
wait1Connection();
//获取输出流
getStreams();
//处理连接
processConnection();
//关闭连接
closeConnection();
++counter;

}
}
catch(EOFException eofException){
System.out.println("Client terminated connection");
}
catch(IOException ee){
ee.printStackTrace();

}
}
private void wait1Connection() throws IOException
{
outFrame.setText("等待连接....\n");
server = toserver.accept();
outFrame.append("连接 " + counter +
" 来自于:" + server.getInetAddress().getHostName());
}
private void getStreams() throws IOException
{
outputS = new ObjectOutputStream(server.getOutputStream());
outputS.flush();
inputS = new ObjectInputStream(server.getInputStream());
outFrame.append("\n成功建立连接。\n");
}
//处理客户端连接:
private void processConnection() throws IOException
{
//连接成功
message = "成功连接到-->>^_^小粉条";
outputS.writeObject(message);
outputS.flush();//刷新输出流
//输入框
inputBox.setEditable(true);
//处理来自客户端的消息
do{
//读取消息;
try{
message = (String) inputS.readObject();
outFrame.append("\n" + message);

outFrame.setCaretPosition(outFrame.getText().length());
}
catch(ClassNotFoundException ex){
outFrame.append("\n UnKown object type received");
}
}
while(!message.equals("一肩秋色>> TERMINATE"));

}
private void closeConnection() throws IOException
{
outFrame.append("\n User terminated connction");
inputBox.setEditable(true);
outputS.close();
inputS.close();
server.close();
}
//向客户端发送消息
private void sendMsg(String message)
{
try{
outputS.writeObject("^_^小粉条>> " + message);
outputS.flush();
outFrame.append("\n^_^小粉条>>" + message);
}catch(IOException em){
outFrame.append("\nError writing object");
}

}
}
public class chat {

public static void main(String[] args) {
// TODO code application logic here
ChatServer process = new ChatServer();
process.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
process.connectServer();
}
}

/*客户端程序:*/
import java.io.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.net.*;

class CClient extends JFrame{
private JTextField inputBox;
private JTextArea outFrame;
private ObjectOutputStream outputS;
private ObjectInputStream inputS;
private String message = "";
private String ChatServer;
private Socket toclient;
CClient(String srhost)
{
super("Client");
ChatServer = srhost;
//设置客户端连接的服务器
Container container = getContentPane();
inputBox = new JTextField();
//建立输入框
inputBox.setEditable(false);
inputBox.addActionListener(
//监听
new ActionListener(){
public void actionPerformed(ActionEvent e)
{
sendMsg(e.getActionCommand());
inputBox.setText(" ");
}
}
);
container.add(inputBox,BorderLayout.NORTH);
//输出框
outFrame = new JTextArea();
container.add(new JScrollPane(outFrame),
BorderLayout.CENTER);
setSize(208,160);
setVisible(true);
}
public void connectClient()
{
try{

//用于连接的Socket
connect1Server();
//得到输入输出流
getStreams();
//处理连接
processConnection();
//关闭连接
closeConnection();
}
catch(EOFException eofException){
System.out.println("Client terminated connection");
}
catch(IOException ee){
ee.printStackTrace();

}
}
//捕获异常
private void getStreams() throws IOException
{
outputS = new ObjectOutputStream(toclient.getOutputStream());
outputS.flush();
inputS = new ObjectInputStream(toclient.getInputStream());
outFrame.append("\n成功建立连接。\n");
}
private void connect1Server() throws IOException
{
outFrame.setText("连接中....\n");
toclient = new Socket(InetAddress.getByName(ChatServer),4000);
outFrame.append("连接至:" + toclient.getInetAddress().getHostName());
}
private void processConnection() throws IOException
{

inputBox.setEditable(true);
//处理来自客户端的消息
do{
//读取消息;
try{
message = (String) inputS.readObject();
outFrame.append("\n" + message);

outFrame.setCaretPosition(outFrame.getText().length());
}
catch(ClassNotFoundException ex){
outFrame.append("\n UnKown object type received");
}
}
while(!message.equals("^_^小粉条>> TERMINATE"));

}
private void closeConnection() throws IOException
{
outFrame.append("\n 关闭连接");
inputBox.setEditable(false);
outputS.close();
inputS.close();
toclient.close();
}
//向服务器端发送消息
private void sendMsg(String message)
{
try{
outputS.writeObject("一肩秋色>> " + message);
outputS.flush();
outFrame.append("\n一肩秋色>>" + message);
}catch(IOException em){
outFrame.append("\nError writing object");
}
}

}
public class ChatClient {

/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
CClient beginning;
if(args.length == 0)
beginning = new CClient("192.168.1.100");//连接到IP
else
beginning = new CClient(args[0]);
beginning.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
beginning.connectClient();
}

}
//无聊写的简单Socket程序,你把里面的名字改下应该就可以用

Ⅷ java中的socket编程是作什么的

Socket,又称为套接字,Socket是计算机网络通信的基本的技术之一。如今大多数基于网络的软件,如浏览器,即时通讯工具甚至是P2P下载都是基于Socket实现的。本文会介绍一下基于TCP/IP的Socket编程,并且如何写一个客户端/服务器程序。
方法/步骤

Java中的socket编程 下面的部分将通过一些示例讲解一下如何使用socket编写客户端和服务器端的程序。 注意:在接下来的示例中,我将使用基于TCP/IP协议的socket编程,因为这个协议远远比UDP/IP使用的要广泛。并且所有的socket相关的类都位于java.net包下,所以在我们进行socket编程时需要引入这个包。

写入数据 接下来就是写入请求数据,我们从客户端的socket对象中得到OutputStream对象,然后写入数据后。很类似文件IO的处理代码。

打开服务器端的socket

读取数据 通过上面得到的socket对象获取InputStream对象,然后安装文件IO一样读取数据即可。这里我们将内容打印出来。

使用socket实现一个回声服务器,就是服务器会将客户端发送过来的数据传回给客户端。

阅读全文

与socket程序java相关的资料

热点内容
二板股票源码 浏览:440
度人经pdf 浏览:898
怎么配置android远程服务器地址 浏览:956
java程序员看哪些书 浏览:939
什么app可以免费和外国人聊天 浏览:793
pdf手写笔 浏览:180
别永远伤在童年pdf 浏览:988
爱上北斗星男友在哪个app上看 浏览:419
主力散户派发源码 浏览:669
linux如何修复服务器时间 浏览:59
荣县优途网约车app叫什么 浏览:477
百姓网app截图是什么意思 浏览:226
php如何嵌入html 浏览:815
解压专家怎么传输 浏览:745
如何共享服务器的网络连接 浏览:134
程序员简易表白代码 浏览:168
什么是无线加密狗 浏览:64
国家反诈中心app为什么会弹出 浏览:69
cad压缩图打印 浏览:104
网页打开速度与服务器有什么关系 浏览:865