导航:首页 > 编程语言 > socket编程实战

socket编程实战

发布时间:2025-07-17 16:12:52

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();
}

}

❷ 链夎皝鑳界粰鎴戞濊矾钖楋纻 鍏充簬绠鍗旷殑socket缂栫▼銆

棣栧厛锛屼綘寰楀啓涓链嶅姟鍣锛涚敤涓や釜瀹㈡埛绔杩炴帴涓婃湇锷″櫒锛屽㈡埛绔阃氲繃链嶅姟鍣ㄨ繘琛屾暟鎹浜ゆ祦銆

锘轰簬TCP锛堥溃钖戣繛鎺ワ级镄凷ocket缂栫▼
链嶅姟鍣ㄧ椤哄簭锛
1. 锷犺浇濂楁帴瀛楀簱
2. 鍒涘缓濂楁帴瀛楋纸socket锛
3. 灏嗗楁帴瀛楃粦瀹氩埌涓涓链鍦板湴鍧鍜岀鍙d笂锛坆ind锛
4. 灏嗗楁帴瀛楄句负鐩戝惉妯″纺锛屽嗳澶囨帴鏀跺㈡埛璇锋眰锛坙isten锛
5. 绛夊緟瀹㈡埛璇锋眰镄勫埌𨱒ワ绂褰撹锋眰甯︽潵钖庯纴鎺ュ弹杩炴帴璇锋眰锛岃繑锲炰竴涓鏂扮殑瀵瑰簲浜庢ゆ¤繛鎺ョ殑濂楁帴瀛楋纸accept锛
6. 鐢ㄨ繑锲炵殑濂楁帴瀛楀拰瀹㈡埛绔杩涜岄氢俊锛坰end/recv锛
7. 杩斿洖锛岀瓑寰呭彟涓涓瀹㈡埛璇锋眰
8. 鍏抽棴濂楁帴瀛(closesocket)
瀹㈡埛绔绋嫔簭锛
1. 锷犺浇濂楁帴瀛楀簱
2. 鍒涘缓濂楁帴瀛(socket)
3. 钖戞湇锷″櫒鍙戦佽繛鎺ヨ锋眰锛坈onnect锛
4. 鍜屾湇锷″櫒绔杩涜岄氢俊(send/receive)
5. 鍏抽棴濂楁帴瀛(closesocket)

锘轰簬UDP锛堥溃钖戞棤杩炴帴锛夌殑socket缂栫▼
链嶅姟鍣ㄧ锛堟帴鏀剁锛夌▼搴忥细
1. 锷犺浇濂楁帴瀛楀簱
2. 鍒涘缓濂楁帴瀛楋纸socket锛
3. 灏嗗楁帴瀛楃粦瀹氩埌涓涓链鍦板湴鍧鍜岀鍙d笂锛坆ind锛
4. 绛夊緟鎺ユ敹鏁版嵁锛坮ecvfrom锛
5. 鍏抽棴濂楁帴瀛(closesocket)
瀹㈡埛绔锛埚彂阃佺锛夌▼搴
1. 锷犺浇濂楁帴瀛楀簱
2. 鍒涘缓濂楁帴瀛楋纸socket锛
3. 钖戞湇锷″櫒鍙戦佹暟鎹锛坰endto锛
4. 鍏抽棴濂楁帴瀛(closesocket)

❸ 关于vb.net中socket编程实例:服务器端的一些问题

Socket类连接后 可以通过类中的 RemoteEndPoint 来获取远程IP和端口信息.
要注意的是.需要将它强制转化为 IPEndPoint类型 然后通过 IPEndPoint.Address以及IPEndPoint.Port来获取对应的IP及端口

例:
Dim REV_SCK As New Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp)
'这里创建一个UDP Socket连接的实例 TCP也是一样的

'省略SOCKET连接的代码 当SOCKET连接成功后 可以用下面的语句获取远程信息
Dim IP as string ,Port as integer
'定义IP和Port变量 用来保存地址及端口
IP = IPAddress.Parse(CType(REV_SCK.RemoteEndPoint, IPEndPoint).Address.ToString())
Port = IPAddress.Parse(CType(REV_SCK.RemoteEndPoint, IPEndPoint).Port)

linux C语言编程,socket实现的即使通讯系统

Socket通信创建步骤:

(1)通过socket()函数创建socket
(2)通过bind函数绑定socket于设备地址
(3)进行读写操作read/recv/recvfrom write/send/sendto
(4)close方法关闭套接字


例子如下:

test1.c

#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<netinet/in.h>
#include<arpa/inet.h>

intmain(void)
{
//createsocket
intfd=socket(AF_INET,SOCK_DGRAM,0);
if(fd==-1)
{
perror("socket ");
exit(-1);
}
printf("socketfd=%d ",fd);

//buildconnectionaddress
structsockaddr_inaddr;
addr.sin_family=AF_INET;
addr.sin_port=htons(6666);
addr.sin_addr.s_addr=inet_addr("127.0.0.1");

intr;
r=bind(fd,(structsockaddr*)&addr,sizeof(addr));
if(r==-1)
{
perror("bind");
close(fd);
exit(-1);
}
printf("bindaddresssuccessful! ");
//acceptorsendmessage
charbuf[255];
structsockaddr_infrom;
socklen_tlen;
len=sizeof(from);
尘梁空while(1)
{
r=recvfrom(fd,buf,sizeof(buf)-1,0,(structsockaddr*)&from,&len);
if(r>0)
{
buf[r]=0;
printf("Themessagefrom%sis:%s ",inet_ntoa(from.sin_addr),buf);
}
else
{
break;
}
}
//closesocket
close(fd);
return0;
}

test2.c

#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<string.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<arpa/inet.h>

intmain(void)
{
//createsocket
intfd=socket(AF_INET,SOCK_DGRAM,0);
if(fd==-1)
{
perror("socket");
exit(-1);
}
printf("createsocketOK! ");
//createansendaddress
structsockaddr_inaddr={};
addr.sin_family=AF_INET;
addr.sin_port=htons(6666);
addr.sin_addr.s_addr=inet_addr("127.0.0.1");
//
intr;
派瞎charbuf[255];
while(1)
{
r=read(0,buf,sizeof(buf)-1);
if(r<=0)
break;
sendto(fd,buf,r,0,(structsockaddr*)&addr,sizeof(addr));
}
//closesocket
渣凳close(fd);
return0;
}

先运行test1.c,然后运行test2.c,在test2.c运行后输入内容,在test1.c所在终端中就会显示信息

运行结果如下:

阅读全文

与socket编程实战相关的资料

热点内容
手机跟ipad怎么设置同步app 浏览:508
服务器第一层是什么意思 浏览:196
linux切换超级用户 浏览:860
命令铃铛 浏览:302
视频加密防盗选哪家 浏览:674
程序员面试编程题 浏览:169
加密货币是散户还是机构 浏览:783
网站图片怎么压缩 浏览:135
小米一直构建加密通道 浏览:379
java代理的作用 浏览:255
qt怎么联合编译dll 浏览:898
解压香皂切割视频大全 浏览:975
pdf越南 浏览:282
苹果app商店搜索不到微信怎么办 浏览:987
程序通过编译是什么意思 浏览:27
学会时间管理对缓解压力重要吗 浏览:510
android业务逻辑层 浏览:827
sdk打开文件夹 浏览:259
伊朗北面命令世界大耳朵图图 浏览:562
javastring比较大小 浏览:562