java下的socket通信与C/C++下的socket通信
来源:互联网 发布:澳门域名注册 编辑:程序博客网 时间:2024/05/14 09:14
JAVA下的socket通信:
关键点:
由Socket对象得到输入流(即由另一方发过来的数据),此时构造BufferedReader对象
由Socket对象得到输出流(即发往另一方的数据),此时构造PrintWriter对象
客户端:
public class Client { public static void main(String[] args) throws Exception { //向本机的5469端口发出客户请求 Socket socket=new Socket(InetAddress.getLocalHost(),5469); //由Socket对象得到输入流,并构造相应的BufferedReader对象 BufferedReader is=new BufferedReader(new InputStreamReader(socket.getInputStream())); //由Socket对象得到输出流,并构造PrintWriter对象 PrintWriter os=new PrintWriter(socket.getOutputStream()); //由系统标准输入设备构造BufferedReader对象 BufferedReader sin=new BufferedReader(new InputStreamReader(System.in)); while(true){ String str=sin.readLine();//从系统标准输入读入一字符串 os.println(str); os.flush(); //刷新输出流,使Server马上收到该字符串 String s=is.readLine(); System.out.println("Server : "+s);//在标准输出上打印从Server读入的字符串 if(str.equals("end")){ break; } } is.close();//关闭Socket输入流 os.close();//关闭Socket输出流 socket.close();//关闭Socket } }服务器端:
public class MyServer { public static void main(String[] args) throws Exception{ ServerSocket server=new ServerSocket(5469);//创建一个ServerSocket在端口5469监听客户请求 Socket client=server.accept();//使用accept()阻塞等待客户请求 BufferedReader is=new BufferedReader(new InputStreamReader(client.getInputStream())); PrintWriter os=new PrintWriter(client.getOutputStream()); BufferedReader sin=new BufferedReader(new InputStreamReader(System.in)); while(true){ String str=is.readLine(); System.out.println("Client : "+str);//在标准输出上打印从Client读入的字符串 os.println(sin.readLine()); os.flush();//刷新输出流,使Client马上收到该字符串 if(str.equals("end")){ break; } } is.close(); os.close(); client.close(); server.close(); } }
C/C++下的Socket通信
客户端:
#include <winsock2.h>#include <iostream>using namespace std;int main(){WSADATA wsaData;SOCKET client;SOCKADDR_IN addr;char buf[128];if(WSAStartup(MAKEWORD(2,2), &wsaData) != 0){cout<<"初始化 winsock dll 失败"<<endl;return -1;}client = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);cout<<"服务器 IP:";cin>>buf;addr.sin_family = AF_INET;addr.sin_addr.s_addr = inet_addr(buf);addr.sin_port = htons(9876);if(connect(client, (SOCKADDR *)&addr, sizeof(addr))== SOCKET_ERROR){cout<<"连接错误";int i;cin>>i;WSACleanup();return -1;}while(1){cout<<"message:";cin>>buf;send(client, buf, strlen(buf)+1, 0);if(strcmp(buf, "quit") == 0) break;recv(client, buf, sizeof(buf),0);cout<<"s:"<<buf<<endl;}closesocket(client);WSACleanup();return 0;}服务器端:
#include "stdio.h"#include "winsock2.h"#include <iostream>#include <fstream>using namespace std;#define mode 1#define test 0int main(){WSADATA wsaData;SOCKET server,accsock;SOCKADDR_IN addr,addr_out;if(WSAStartup(0x202,&wsaData)!=0){cout<<"初始化错误"<<endl;return -1;}server = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);addr.sin_addr.S_un.S_addr = htonl(INADDR_ANY);addr.sin_family = AF_INET;addr.sin_port = htons(9876);bind(server,(SOCKADDR *)&addr,sizeof(addr));char buf[255];listen(server,1);cout<<"server is listening..."<<endl;int len = sizeof(SOCKADDR);accsock = accept(server,(SOCKADDR *)&addr_out,&len);char *ip;int port;ip = inet_ntoa(addr_out.sin_addr);port = htons(addr_out.sin_port);cout<<"server accept client ip:"<<ip<<",port:"<<port<<endl;while(1){recv(accsock,buf,strlen(buf),0);if(buf == 'quit')break;}closesocket(accsock);closesocket(server);WSACleanup();return 0;}
0 0
- java下的socket通信与C/C++下的socket通信
- Java与C之间的socket通信
- Java与C之间的socket通信
- Java与C之间的socket通信
- C Socket与Java Socket之间的通信
- linux下java程序与C语言程序通过SOCKET通信的简单例子
- linux下java程序与C语言程序通过SOCKET通信的简单例子
- linux下java程序与C语言程序通过SOCKET通信的简单例子
- Linux下C语言实现的Socket通信
- windows与虚拟机下的socket通信
- JAVA和C之间的socket通信
- java 与 c/c++的socket通信问题
- c++builer与java之间的socket通信
- java与c/c++进行socket通信的一些问题
- java与c/c++进行socket通信的一些问题
- C服务端与java客户端的socket通信注意事项
- java与c/c++进行socket通信的一些问题
- flex下的socket通信
- 程序员十个层次
- php开发需要注意什么问题?
- 【算法】Evaluate Reverse Polish Notation
- matlab命令
- OJ_1089
- java下的socket通信与C/C++下的socket通信
- SRM 601 D1 L2:WinterAndSnowmen, dp
- 运行PHP程序时提示“Notice: Undefined index”的解决办法
- Jenkins master在windows上安装
- 抽象工厂模式
- [OpenCV] -- 简单摄像头操作
- 自动化测试项目类关系图
- 邮件模板中css和html设计的一些问题
- OJ_1090 路径打印