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

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

//创建ServerSocket 服务器端对象。。
ServerSocket ss = new ServerSocket(6666);
//监听服务器连接
s = ss.accept();

② java编程中,Socket通信是怎么实现的

java编程对于Socket之间的通信过程如下:

服务端往Socket的输出流里面写东西,客户端就可以通过Socket的输入流读取对应的内容。Socket与Socket之间是双向连通的,所以客户端也可以往对应的Socket输出流里面写东西,然后服务端对应的Socket的输入流就可以读出对应的内容。下面来看一些服务端与客户端通信的例子:

publicclassServer{

publicstaticvoidmain(Stringargs[])throwsIOException{
//为了简单起见,所有的异常信息都往外抛
intport=8899;
//定义一个ServerSocket监听在端口8899上
ServerSocketserver=newServerSocket(port);
//server尝试接收其他Socket的连接请求,server的accept方法是阻塞式的
Socketsocket=server.accept();
//跟客户端建立好连接之后,我们就可以获取socket的InputStream,并从中读取客户端发过来的信息了。
Readerreader=newInputStreamReader(socket.getInputStream());
charchars[]=newchar[64];
intlen;
StringBuildersb=newStringBuilder();
while((len=reader.read(chars))!=-1){
sb.append(newString(chars,0,len));
}
System.out.println("fromclient:"+sb);
reader.close();
socket.close();
server.close();
}

}
客户端代码
Java代码publicclassClient{

publicstaticvoidmain(Stringargs[])throwsException{
//为了简单起见,所有的异常都直接往外抛
Stringhost="127.0.0.1";//要连接的服务端IP地址
intport=8899;//要连接的服务端对应的监听端口
//与服务端建立连接
Socketclient=newSocket(host,port);
//建立连接后就可以往服务端写数据了
Writerwriter=newOutputStreamWriter(client.getOutputStream());
writer.write("HelloServer.");
writer.flush();//写完后要记得flush
writer.close();
client.close();
}

}

③ JAVA Socket保持连接

请问下ip地址填写对了吗,端口填写对了吗,涉及到的java类和方法有没有正确的使用呢。题主最好把demo代码贴出来看看,报错信息也打印出来,这样才能更好的定位错误原因。

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

1、在打开的ie浏览器窗复口右上方点击制齿轮图标,选择“Internet选项”,如下图所示:

⑤ 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、作为服务器的机器上有防火墙设置,你的机器上如果有网络安全的软件(如内360、网盾等容),也有可能限制你的程序打开网络端口。
2、服务端没有打开8080端口:原因有多种,不一定是代码的问题,如果方便,可以补充服务端的代码来看看。

⑦ java中用socket实现客户端与服务端双向连接问题

//服务端程序:
importjava.io.*;
importjava.net.*;

publicclassTCPServer{
publicstaticvoidmain(String[]args)throwsIOException{
newTCPServer().init();
}
@SuppressWarnings("static-access")
privatevoidinit()throwsIOException{
@SuppressWarnings("resource")
ServerSocketserver=newServerSocket(1000);
Socketclient=null;
while(true){
try{
client=server.accept();
BufferedInputStreambis=newBufferedInputStream(client.getInputStream());
byte[]b=newbyte[1024];
intlen=0;
Stringmessage="";
while((len=bis.read(b))!=-1){
message=newString(b,0,len);
System.out.print("客户端:"+client.getInetAddress().getLocalHost().getHostAddress()+"发来消息:"+message);
if("byte".equals(message.trim()))
client.close();
PrintWriterpw=newPrintWriter(client.getOutputStream(),true);
pw.println(message);
}
}catch(Exceptione){
System.err.println("客户端:"+client.getInetAddress().getLocalHost().getHostAddress()+"已断开连接!");
}
}
}
}
//客户端程序:
importjava.io.*;
importjava.net.Socket;

{
publicstaticvoidmain(String[]args)throwsIOException{
newTCPClient().init();
}
privatevoidinit()throwsIOException{
@SuppressWarnings("resource")
finalSocketclient=newSocket("127.0.0.1",1000);
BufferedReaderin=newBufferedReader(newInputStreamReader(System.in));
Stringsend="";
while(true){
send=in.readLine();
PrintWriterout=newPrintWriter(client.getOutputStream(),true);
if(!"byte".equals(send.trim()))
out.println(send);
else{
out.println(send);
System.exit(0);
}
newThread(newTCPClient(){
@SuppressWarnings("static-access")
publicvoidrun(){
try{
BufferedInputStreambis=newBufferedInputStream(client.getInputStream());
byte[]b=newbyte[1024];
intlen=0;
while((len=bis.read(b))!=-1){
System.out.println("服务器:"+client.getInetAddress().getLocalHost().getHostAddress()+"发来消息:"+newString(b,0,len).trim());
}
}catch(IOExceptione){
System.err.println("连接服务器失败!");
}
}
}).start();
}
}
publicvoidrun(){}
}

//服务器测试结果:

客户端:192.168.0.200发来消息:001 byte

客户端:192.168.0.200发来消息:byte

客户端:192.168.0.200 已断开连接!

客户端:192.168.0.200发来消息:adasd

客户端:192.168.0.200 已断开连接!

//客户端测试结果:

---001号客户端--

001byte

服务器:192.168.0.200发来消息:001byte

byte //001礼貌说跟服务器说byte

---002号客户端--

adasd //002客户端直接关闭程序

服务器:192.168.0.200发来消息:adasd

⑧ java socket连接的问题。。。

楼主其实只发送了2个数据:“aaa”,55.但是你的服务器端却在死循环里面一直在读取。因为数据只读两次就读完了,没有数据了,所以提示需要reset.就是说你想在继续读的话,就应该先reset,不过这没有意义。
应该做一个判断,
@Override
public void run() {
while (true) {
try {
int type = dis.readInt();
System.out.println(type);
} catch (IOException e) {
e.printStackTrace();
}
}

这里不应该是死循环。死循环应该在另外的地方
如果读完了就跳出循环吧
try {
int type = dis.readInt();//怎么知道dis已经读取完了?我也不知道
System.out.println(type);
} catch (IOException e) {
e.printStackTrace();
break;//就捕获异常吧,然后跳出循环

}

服务器想运行一次接受多个请求的话,死循环加这里
while(true){//这里
Socket s = ss.accept();
DataInputStream dis = new DataInputStream(new BufferedInputStream(
s.getInputStream()));
String str = dis.readUTF();
System.out.println(str);
new Thread(new Client(dis)).start();
}

⑨ JAVA中socket的TCP连接个数

如果你能控制程序的话,就用楼上的办法了。。
否则,用命令阿。。。
比如:
netstat -an 就能版得到全部连接情况权。。
如果是unix,那么:
netstat -an | grep 80 | wc -l
得到绑定80端口的连接数。

⑩ 有个Java 项目,通过Socket Tcp长连接通信方式向服务器发送消息。

你这消息头、消息体的结构格式都定下来了,总长度就是固定的啊?消息体的长度不版是一共2+2+4+1=9个字节么?权消息格式肯定要按照服务端的要求进行发送,明显服务端不是java的程序。。但是java里是没有Unsigned Integer这种数据类型的(java的stream操作里提供了一些unsigned的方法,或者自己写方法来生成对应的字节格式),你可以按照他的要求,使用字节数组封装好,然后发送。
针对这个示例消息,你可以:
创建一个长度为9的字节数组。把“9”变成byte放入前两个字节(前两个字节数据应该为:0x00, 0x09。这是第一个字段,长度),后面的字段数据以此类推。一个字段一个字段处理成服务器要求的格式。
然后把字节流发送给服务端。